centos lnmp如何进行调试
小樊
41
2026-01-10 22:04:23
CentOS 上 LNMP 调试流程与要点
一、快速定位流程
服务状态与语法
查看并验证:systemctl status nginx 、nginx -t ;systemctl status php-fpm 、php-fpm -t ;systemctl status mysqld 。任何配置变更后先语法检查再重启。
日志优先
关键日志:/var/log/nginx/error.log 、/var/log/php-fpm/error.log 、/var/log/mysqld.log 。使用 tail -f 实时观察错误关键字(如 Permission denied、No input file specified、Connection refused )。
网络与端口
本机可达:ping 服务器IP ;端口监听:ss -tulpen | grep -E ‘(:80|:443|:9000|:3306)’ ;远端连通:curl -I http://服务器IP 或 telnet 服务器IP 80 。
防火墙与云安全组
firewall-cmd --list-ports ;放行端口示例:firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload 。如使用云服务器,同步检查安全组规则是否放行 80/443/9000/3306 。
资源与权限
资源:top 、free -m 、df -h ;权限与属主:网站目录常见为 nginx:nginx 或 www-data:www-data ,确保 Nginx/PHP-FPM 运行用户 对目录有读/执行权限。
二、Nginx 与 PHP-FPM 联动排查
典型症状与处理
访问 .php 文件被下载:未走 FastCGI。确认 location ~ .php$ 存在且包含:fastcgi_pass 127.0.0.1:9000; 、fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 、include fastcgi_params; ;重启 nginx/php-fpm 后再测。
502/504 错误:多为 PHP-FPM 未启动/崩溃/监听地址不匹配/超时 。检查 php-fpm 状态与日志;确认 listen=127.0.0.1:9000 与 Nginx 的 fastcgi_pass 一致;必要时调大 fastcgi_read_timeout 。
403 Forbidden:目录无索引或权限不足。检查 root 路径、index 指令、目录权限与 SELinux (见下一节)。
配置变更不生效:执行 nginx -t 通过后 systemctl reload nginx ;PHP 配置变更后 systemctl reload php-fpm 。
三、MySQL 与远程连接排查
本地无法登录
查看状态与日志:systemctl status mysqld 、tail -f /var/log/mysqld.log 。若提示策略限制,可临时降低密码策略(如 set global validate_password_policy=0; set global validate_password_length=4; )后重置密码。
远程连接失败
确认服务监听:ss -lntp | grep 3306 ;若仅 127.0.0.1:3306 ,需调整 MySQL 配置以监听外部地址并重启。
防火墙/云安全组:放行 3306/tcp ;云上实例需同时配置安全组入站规则。
用户权限:确保存在允许远程的主机记录(如 ‘root’@‘%’ )并授予权限;修改后执行 FLUSH PRIVILEGES; 。
四、常见陷阱与修复建议
SELinux 拦截
查看状态:sestatus ;临时测试可 setenforce 0 (仅测试)。生产环境建议用 setsebool 或策略模块放行 httpd/php-fpm 相关访问,而非长期关闭。
防跨目录限制(使用 LNMP 一键包时常见)
网站根目录的 .user.ini 可能限制 open_basedir 。修改/删除前先 chattr -i .user.ini ,调整后 chattr +i .user.ini ;或调整 fastcgi_param PHP_ADMIN_VALUE “open_basedir=…” 并重启 nginx 。框架(如 Laravel/ThinkPHP )将站点根指向 public 时,需把 open_basedir 包含项目根目录(不止 public)。
端口与协议混淆
3306 为 TCP 端口;若误用 UDP 检测会失败。使用 ss/telnet/curl 时明确协议类型。
资源与连接数
高并发下检查 ulimit -n 、worker_processes/worker_connections (Nginx)、pm.max_children (PHP-FPM)、数据库最大连接数;配合 top/free/df 排除资源瓶颈。
五、一键最小化调试清单
验证 Nginx 与 PHP
在 /usr/share/nginx/html/index.php 写入 ;访问 http://服务器IP/index.php 应显示 PHP 信息页。若仍“下载文件”,回到第二节检查 FastCGI 配置与端口。
验证数据库
本地执行 mysql -u root -p 登录;创建测试库/表并写入数据,确认应用侧连接参数正确。
复核安全策略
再次确认 firewall-cmd 已放行 80/443/9000/3306 ,云安全组策略同步生效;必要时抓包或增加应用日志以闭环定位。