温馨提示×

LNMP在Debian下如何调试

小樊
38
2025-12-26 13:49:14
栏目: 智能运维

Debian 下 LNMP 调试流程与要点

一、快速定位流程

  • 查看系统级日志与资源:用 tail -f /var/log/syslog 实时观察系统事件;必要时配合 journalctl -xedmesg 排查内核与启动问题;用 top/vmstat/iostat 检查 CPU/内存/磁盘 I/O 是否异常。
  • 检查服务状态与端口连通:确认 Nginx/MySQL/MariaDB/PHP-FPM 是否运行(如 systemctl status),并用 ss -lntp | grep -E ‘(:80|:443|:3306)’netstat 检查端口监听;对外连通性可用 curl -I http://localhost 或本机浏览器访问。
  • 定位到组件日志:优先查看 Nginx 错误日志 /var/log/nginx/error.logMariaDB/MySQL 错误日志 /var/log/mysql/error.logPHP-FPM 日志(路径取决于版本与配置,常见如 /var/log/php7.4-fpm.log/var/log/php7.4-fpm/error.log)。
  • 校验配置语法并重载:执行 nginx -tmariadb --verbose --help | grep ‘Default options’(确认 my.cnf 包含路径)、php-fpm -t,无误后 systemctl reload/restart 对应服务。
  • 复核网络与安全策略:用 ufw statusiptables -L 确认 80/443/3306 等端口放行;云服务器还需检查安全组规则。

二、Nginx 与 PHP-FPM 专项排查

  • 配置与连通性:在 /etc/nginx/sites-available/defaultlocation ~ .php$ 中确保包含 include snippets/fastcgi-php.conf;fastcgi_pass 与 PHP-FPM 一致(如 unix:/var/run/php/php7.4-fpm.sock;127.0.0.1:9000);重载 Nginx 后用 curl -I 或浏览器访问测试页。
  • PHP 基础检查:在站点目录放置 /var/www/html/info.php(内容为 )验证解析与模块;生产环境务必删除。
  • PHP 安全与常见项:在 /etc/php/7.4/fpm/php.inicgi.fix_pathinfo=0 防止路径解析漏洞;如需记录 PHP 错误,设置 error_log 并确保 display_errors 在生产环境关闭。
  • FPM 进程与池配置:核对 /etc/php/7.4/fpm/pool.d/www.confuser/group(常见为 www-data)、listen(与 Nginx 一致)、pm.max_children 等资源参数,修改后 systemctl restart php7.4-fpm

三、MariaDB MySQL 专项排查

  • 服务与错误日志:用 sudo systemctl status mysql 查看运行状态,优先排查 /var/log/mysql/error.log 中的启动失败、权限、磁盘空间等线索。
  • 安全初始化与连接:首次部署执行 sudo mysql_secure_installation 完成加固;应用连接失败时可先用 mysql -u root -p -h 127.0.0.1 排除网络/权限问题。
  • 性能与慢查询:用 mysqladmin statusSHOW PROCESSLIST; 观察连接与负载;对可疑查询使用 EXPLAIN 分析执行计划,必要时引入 Percona Toolkit 深入诊断。

四、日志管理与高级调试

  • 日志集中查看与检索:实时跟踪 Nginx 访问/错误日志(/var/log/nginx/access.log、/var/log/nginx/error.log)、MariaDB 错误日志(/var/log/mysql/error.log)、PHP-FPM 日志(如 /var/log/php7.4-fpm.log/var/log/php7.4-fpm/error.log);用 grep/awk 快速筛选关键字(如 “error”、“timeout”)。
  • 日志轮转与容量控制:通过 logrotate 管理日志轮转与压缩,避免磁盘被占满(Nginx 等常见服务已自带配置,可按需调整保留份数与压缩策略)。
  • 深入系统跟踪:对疑难进程可用 strace -p -f -T -o /tmp/strace.log 跟踪系统调用;网络层面结合 ss -stcpdump 定位连接与握手问题。
  • 监控与告警:结合 top/htop/vmstat/iostat 做资源面监控,使用 Nagios/Zabbix/Prometheus 搭建长期监控与告警;PHP 应用可引入 Xdebug 做代码级性能与调用分析。

五、常见症状与处理对照表

症状 优先检查 快速修复
502 Bad Gateway Nginx error.log、PHP-FPM 是否运行、listen 地址与权限(/var/run/php/ 目录、socket 所属用户组) 确认 php-fpm 运行;统一 fastcgi_pass 与 FPM 的 listen;必要时将 www-data 加入 FPM 运行用户组并重启服务
403 Forbidden Nginx 配置 root 与 index、目录权限(/var/www/html 及子目录对 www-data 可读) 修正 root 路径与 index 指令;设置目录权限为 755、文件 644
404 Not Found Nginx location 匹配、root 指向、文件是否存在 校正 roottry_files;确认文件已部署到指定目录
数据库连接失败 应用 DB 配置、MySQL 是否运行、/var/log/mysql/error.log、端口与防火墙 启动 mysql;核对 host/user/password;开放 3306 或改用 127.0.0.1;检查云安全组
PHP 空白页 PHP 错误日志、display_errors、short_open_tag、语法错误 开启并记录 PHP 错误日志;临时打开 display_errors 定位;修正语法或启用 short_open_tag
上传/写入失败 目录权限、PHP upload_max_filesize/post_max_size、磁盘空间 为上传目录赋权 www-data;在 php.ini 调整上传大小限制;清理磁盘空间

0