Debian环境下LNMP(Linux+Nginx+MySQL/MariaDB+PHP)架构的故障排查,需围绕服务状态、配置文件、日志分析、资源占用、网络连接五大核心方向展开,以下是具体技巧:
使用systemctl命令检查LNMP核心服务(Nginx、MySQL/MariaDB、PHP-FPM)的运行状态,是故障排查的第一步:
systemctl status nginx # 检查Nginx是否运行
systemctl status mysql # 检查MySQL(若使用MariaDB则替换为mariadb)
systemctl status php7.x-fpm # 检查PHP-FPM(根据实际PHP版本调整,如php8.2-fpm)
若服务未运行,可通过systemctl start <服务名>启动,并观察启动是否成功。
日志是定位故障的“金钥匙”,需重点查看以下日志文件:
/var/log/nginx/error.log(记录Nginx自身错误,如配置语法、端口冲突);/var/log/mysql/error.log(记录数据库启动、查询错误,如权限不足、表损坏);/var/log/php7.x-fpm.log(记录PHP进程错误,如脚本语法、资源超限)。tail -f <日志文件>实时跟踪日志,或grep "错误关键词" <日志文件>快速定位关键错误。配置文件的语法错误是导致服务无法启动的常见原因,需使用对应命令测试:
nginx -t(检查/etc/nginx/nginx.conf及包含的站点配置文件,如/etc/nginx/sites-enabled/*);mysqld --validate-config(验证/etc/mysql/my.cnf或/etc/my.cnf的语法);php-fpm7.x -t(检查/etc/php/7.x/fpm/php-fpm.conf及pool.d下的配置文件)。资源耗尽可能导致服务响应缓慢或崩溃,使用以下命令监控:
top/htop:实时查看CPU、内存占用,识别占用过高的进程(如PHP-FPM进程占用100% CPU,可能需要调整pm.max_children);df -h:检查磁盘空间(若/var分区满,可能导致MySQL无法写入日志或数据库崩溃);free -m:查看内存使用情况(若内存不足,需优化PHP-FPM的pm.start_servers参数)。LNMP服务依赖网络端口通信,需确保端口未被占用且防火墙允许访问:
netstat -tuln | grep ':80\|:443\|:3306'(确认Nginx的80/443端口、MySQL的3306端口是否处于LISTEN状态);sudo ufw status(若使用UFW,确保允许HTTP/HTTPS及MySQL端口:sudo ufw allow 80/tcp; sudo ufw allow 443/tcp; sudo ufw allow 3306/tcp);ping example.com(检查服务器网络是否正常,telnet example.com 80测试端口连通性)。fastcgi_pass是否指向PHP-FPM的正确监听地址(如unix:/run/php/php7.x-fpm.sock或127.0.0.1:9000);listen参数是否与Nginx一致,且listen.owner/listen.group设置为www-data(Nginx默认用户);systemctl restart nginx php7.x-fpm。pid文件路径(如/run/php/php7.x-fpm.pid)是否存在;www-data用户对/var/run/php/php7.x-fpm.sock(套接字模式)或/run/php/php7.x-fpm.pid(端口模式)的写入权限;lsof -i :9000(若使用端口模式)检查端口是否被其他进程占用。保持系统及软件包最新,修复潜在的依赖问题:
sudo apt update && sudo apt upgrade(安装最新安全补丁及功能更新);sudo apt install -f(修复损坏的依赖关系,如安装过程中提示“依赖失败”时使用);以上技巧覆盖了Debian LNMP环境的大部分常见故障场景,排查时需结合现象→日志→配置→资源的逻辑逐步缩小问题范围,优先解决最直接影响服务运行的因素(如服务未启动、配置错误)。若问题仍无法解决,可提供具体错误日志进一步分析。