1. 检查服务状态
使用systemctl命令确认LNMP各组件(Nginx、MySQL/MariaDB、PHP-FPM)的运行状态,定位未启动的服务:
sudo systemctl status nginx # 检查Nginx状态
sudo systemctl status mysql # 检查MySQL状态(若使用MariaDB则替换为mariadb)
sudo systemctl status php-fpm # 检查PHP-FPM状态(版本号需替换为实际安装版本,如php7.4-fpm)
若服务未运行,使用sudo systemctl start 服务名启动对应组件。
2. 查看错误日志
通过日志获取具体错误信息是故障定位的关键:
/var/log/nginx/error.log(使用tail -f /var/log/nginx/error.log实时查看最新日志);/var/log/mysql/error.log(或/var/log/mariadb/error.log);/var/log/php-fpm.log(或/var/log/php/7.x/fpm/error.log,路径取决于PHP版本)。3. 验证配置文件语法
配置文件语法错误会导致服务无法启动,需逐一检查:
sudo nginx -t(显示“syntax is ok”则表示配置正确);sudo mysql --validate-config(验证配置文件语法);sudo php-fpm -t(测试PHP-FPM配置文件)。4. 检查端口占用
确保Nginx(默认80/443端口)、MySQL(默认3306端口)未被其他进程占用:
sudo netstat -tuln | grep ':80' # 检查80端口占用
sudo netstat -tuln | grep ':3306' # 检查3306端口占用
若端口被占用,可通过kill -9 进程ID终止冲突进程,或修改对应服务的端口配置。
5. 检查文件权限
Nginx(通常以www-data用户运行)和PHP-FPM需要访问网站文件和目录,确保权限正确:
sudo chown -R www-data:www-data /var/www/html # 将网站目录所有者设为www-data
sudo chmod -R 755 /var/www/html # 设置目录权限为755(文件可设为644)
避免因权限不足导致的“Permission denied”错误。
1. Nginx无法启动
sudo nginx -t检查配置文件语法,修正错误后重启Nginx;netstat检查80/443端口是否被占用,终止冲突进程;sudo systemctl start php-fpm)。2. MySQL无法启动
/etc/mysql/my.cnf或/etc/mysql/mariadb.conf.d/50-server.cnf配置文件语法;/var/lib/mysql)的所有者为mysql:sudo chown -R mysql:mysql /var/lib/mysql;netstat检查3306端口是否被占用。3. PHP-FPM无法启动
/var/run/php目录缺失(旧版本常见问题)、权限问题。/etc/php/7.4/fpm/pool.d/www.conf)是否存在,修正php-fpm.conf中的include路径;/var/run/php目录并设置正确权限:sudo mkdir -p /var/run/php && sudo chown www-data:www-data /var/run/php;php.ini中的cgi.fix_pathinfo是否设置为0(防止路径遍历攻击)。4. 502 Bad Gateway错误
sudo systemctl start php-fpm);fastcgi_pass指令是否指向正确的PHP-FPM监听地址(如unix:/var/run/php/php7.4-fpm.sock或127.0.0.1:9000);pm.max_children值(如从5调整为20),避免进程数不足导致的超时。5. 504 Gateway Timeout错误
backlog队列满、内存不足。request_terminate_timeout值(如从30s增加到300s),延长脚本执行时间;listen.backlog值(如从128调整为1024),扩大连接队列;6. 系统资源不足
top或htop命令查看资源占用情况,终止占用过高的进程(如kill -9 PID);worker_processes)、MySQL(如优化查询、增加缓存)配置。