Ubuntu中LNMP故障排查技巧
使用systemctl命令确认LNMP核心服务是否处于运行状态,这是排查故障的第一步:
sudo systemctl status nginx(若未运行,用sudo systemctl start nginx启动)sudo systemctl status mysql或sudo systemctl status mariadbsudo systemctl status php7.x-fpm(根据实际PHP版本调整,如php7.4-fpm、php8.1-fpm)日志是定位故障的“金钥匙”,LNMP各组件的错误日志路径如下:
/var/log/nginx/error.log(记录HTTP请求错误、配置语法问题等)/var/log/mysql/error.log(记录数据库启动失败、查询错误等)/var/log/php7.x-fpm.log或/var/log/php-fpm/error.log(记录PHP脚本错误、FPM进程异常等)tail -f /path/to/logfile实时查看日志,快速定位最新错误信息(如Nginx的“403 Forbidden”可能对应权限问题,MySQL的“Access denied”可能对应用户权限错误)。配置文件语法错误会导致服务无法启动或运行异常,需使用对应命令检查:
sudo nginx -t(检查/etc/nginx/nginx.conf及站点配置文件的语法,如/etc/nginx/sites-available/default)sudo mysqld --validate-config(部分版本支持,或通过sudo systemctl restart mysql观察启动日志)sudo php-fpm7.x -t(如sudo php-fpm7.4 -t,检查/etc/php/7.x/fpm/php.ini及/etc/php/7.x/fpm/pool.d/www.conf的语法)sudo systemctl restart 服务名)。端口被占用会导致服务无法监听请求,常见端口及排查方法:
sudo netstat -tulnp | grep ':80\b'或sudo ss -tulnp | grep ':80\b'(ss命令更高效)sudo netstat -tulnp | grep ':3306\b'/var/run/php/php7.x-fpm.sock)或端口(若配置为TCP),sudo ls -l /var/run/php/php7.x-fpm.sock或sudo netstat -tulnp | grep 'php-fpm'kill -9 进程ID终止冲突进程(需确认进程合法性),或修改冲突服务的端口配置。防火墙或网络问题会阻止外部访问或组件间通信:
sudo ufw status查看规则,确保允许HTTP(80)、HTTPS(443)、MySQL(3306)等端口,如sudo ufw allow 80/tcp、sudo ufw allow 3306/tcpping 8.8.8.8测试服务器是否能访问互联网,ping 域名测试DNS解析,traceroute 域名查看网络路径(排查网络中断或路由问题)权限不足会导致Nginx无法读取网站文件、PHP-FPM无法执行脚本、MySQL无法访问数据库文件:
www-data)有权限读取网站目录,如sudo chown -R www-data:www-data /var/www/html,sudo chmod -R 755 /var/www/html/etc/php/7.x/fpm/pool.d/www.conf中的user和group设置(通常为www-data),确保与Nginx用户一致SHOW GRANTS FOR 'your_user'@'localhost';查看用户权限,确保其有访问目标数据库的权限(如GRANT ALL PRIVILEGES ON database_name.* TO 'your_user'@'localhost';)sudo systemctl status php7.x-fpm),确保Nginx配置中的fastcgi_pass指向正确的PHP-FPM socket或端口(如fastcgi_pass unix:/var/run/php/php7.x-fpm.sock;)。/etc/php/7.x/fpm/pool.d/www.conf中的request_terminate_timeout(如设置为300秒),并重启PHP-FPM服务。sudo systemctl status mysql),确认连接配置(主机名、用户名、密码、端口)正确,检查防火墙是否阻止3306端口,使用SHOW GRANTS FOR 'your_user'@'localhost';确认用户权限。系统资源耗尽可能导致服务响应缓慢或崩溃,使用以下工具监控:
sort -k 9按CPU排序,sort -k 4按内存排序)sysstat包,sudo apt install sysstat)