网站无法访问时,LNMP环境内置的nginx、php-fpm、mysql命令行工具和日志文件可以直接定位问题根源,无需额外安装第三方软件,这是最快速、最可靠的排查方式。
LNMP环境网站打不开怎么办?从基础检查开始
确认网络与端口监听
登录服务器后,先用ping检查网络连通性,确保服务器本身在线,接着用ss -tlnp或netstat -tlnp查看关键端口是否在监听:
- Nginx:80(HTTP)和443(HTTPS)
- PHP-FPM:9000或unix socket文件
- MySQL:3306
如果端口未列出,说明对应服务未启动或配置有误,直接systemctl status nginx查看服务状态,并配合journalctl -u nginx查看最近错误。
服务运行状态快速验证
- Nginx:
systemctl status nginx,若显示inactive则尝试systemctl start nginx - PHP-FPM:
systemctl status php-fpm,注意观察进程数是否正常 - MySQL:
systemctl status mysqld,也可以用mysqladmin -u root -p ping测试连通性
如果服务启动失败,错误信息会直接提示,例如配置错误、端口冲突或依赖缺失。
用内置配置工具逐一排查
nginx -t,配置问题的照妖镜
nginx -t是Nginx配置检查的核心命令,执行后会输出语法测试结果,如果有错误,会直接显示行号及原因,例如invalid number of arguments in "root" directive,如果测试通过但访问仍异常,立即查看/var/log/nginx/error.log,里面会记录具体失败原因,如文件不存在、权限不足或上游连接超时。
Nginx 502 Bad Gateway排查:检查PHP-FPM状态
502错误在LNMP环境中非常常见,通常与PHP-FPM有关。

- 先检查PHP-FPM进程:
ps aux | grep php-fpm,如果进程数很少或为零,说明PHP-FPM已停止或崩溃 - 测试PHP-FPM配置:
php-fpm -t,语法错误会直接报错 - 修改池配置:编辑
/etc/php-fpm.d/www.conf,调整pm.max_children、pm.start_servers等参数,然后重启systemctl restart php-fpm - 如果是socket连接,检查socket文件权限:
ls -l /var/run/php-fpm/www.sock,确保Nginx用户(通常为nginx)有读写权限
MySQL连接不上怎么办
网站出现数据库连接错误时,先用mysqladmin -u root -p ping测试能否正常响应,如果返回mysqld is alive则说明MySQL正常,否则可能是服务未运行或连接配置错误。
- 查看MySQL错误日志:
/var/log/mysqld.log,常见原因包括磁盘空间不足、InnoDB表损坏或连接数达到上限 - 检查连接数:登录MySQL后执行
SHOW VARIABLES LIKE 'max_connections'; - 如果日志提示
Can't connect to local MySQL server through socket,检查socket路径是否与php配置一致
文件权限与操作系统干扰
目录权限与用户一致性
Nginx或PHP-FPM对网站目录无读写权限,会直接导致403 Forbidden或内部错误。
- 检查目录权限:
ls -ld /var/www/html,确保所有者和组与Nginx/PHP-FPM运行用户一致 - 常见配置:Nginx用户为nginx,PHP-FPM用户为www,此时需要将网站目录属主改为
www:www或nginx:nginx,并设置正确权限,如755或750
SELinux和防火墙影响
服务都正常但访问仍被拒绝时,排查SELinux和防火墙。
- 查看SELinux状态:
,若为Enforcing,尝试临时关闭测试:
getenforce
setenforce 0 - 恢复规则:
restorecon -Rv /var/www/html - 防火墙:
firewall-cmd --list-all,检查是否开放了80/443端口,未开放则添加:firewall-cmd --add-service=http --permanent && firewall-cmd --reload
常见错误场景与内置工具对照表
| 错误现象 | 可能原因 | 内置排查工具 |
|---|---|---|
| 502 Bad Gateway | PHP-FPM挂掉或超时 | ps aux | grep php-fpm、php-fpm -t、error.log |
| 403 Forbidden | 目录权限不足或缺少index文件 | ls -l、nginx -t、error.log |
| 504 Gateway Timeout | PHP执行超时或代理超时 | php-fpm配置max_execution_time、nginx配置proxy_read_timeout |
| 数据库连接错误 | MySQL未启动或连接数超限 | mysqladmin ping、mysqld.log、SHOW PROCESSLIST |
| 白屏无输出 | PHP错误被屏蔽 | php-fpm错误日志、php -l file.php检查语法 |
日志分析,找到问题根源
善用error.log
Nginx错误日志默认位于/var/log/nginx/error.log,PHP-FPM错误日志在/var/log/php-fpm/,MySQL错误日志在/var/log/mysqld.log,使用tail -f /var/log/nginx/error.log实时监控,然后在浏览器触发访问,新错误会立即打印出来,直接定位问题。
结合access.log分析
access.log记录每次请求的响应码、URL和耗时,当出现500或404时,可以快速定位具体请求:

grep "500" /var/log/nginx/access.log- 根据时间戳去error.log中查找对应错误
使用php -l检查PHP语法
如果某个页面空白或报错,可能是PHP代码语法问题。php -l /path/to/file.php会输出Parse error或No syntax errors,将语法错误修复后,再刷新页面验证。
问题解答:LNMP环境网站无法访问常见问题解答
Nginx 403 Forbidden怎么解决?
先查看error.log,确认是权限问题还是缺少index文件,检查网站目录权限,确保Nginx用户有读取和执行权限,如果是SELinux导致,尝试chcon -R -t httpd_sys_content_t /网站目录,如果目录权限正确,检查index指令配置,确保存在对应的索引文件。
Nginx 502 Bad Gateway如何排查?
首先检查PHP-FPM是否运行,ps aux | grep php-fpm,如果进程数少,说明需要调整pm.max_children,查看PHP-FPM错误日志,常见原因是pm.max_children耗尽或执行超时,如果是socket连接,检查socket文件权限,并确保Nginx配置中的fastcgi_pass路径与PHP-FPM监听路径一致。
MySQL连接不上是什么原因?
执行mysqladmin ping,如果失败,查看MySQL错误日志,常见原因:MySQL服务未启动、磁盘空间满、/tmp目录权限问题、bind-address限制为127.0.0.1导致远程连接被拒,修改/etc/my.cnf后重启服务,如果日志提示Table' is marked as crashed,需要执行REPAIR TABLE修复。
LNMP环境内置工具覆盖了从网络、服务到应用层的全链路排查需求,熟悉这些工具能让你在网站出现问题时第一时间定位根因,减少宕机时间。