一、LNMP 排错为什么要用“排除法”¶
原笔记对排错方法的总结非常明确:
- 用排除法
- 先从 Linux 基础环境看起
- 再分别检查 Nginx、PHP、MySQL
这是因为 LNMP 是多个组件串联起来的。
只要其中一层出问题,最终表现都可能是“网站打不开”。
原笔记还提醒要关注:
- Linux 防火墙
- SELinux
这些系统层面的因素也可能影响站点访问。
二、第一步:先确认 Nginx 本身是否正常¶
原笔记先检查了端口和进程:
[root@oldboy01 blog]# ss -lntup | grep 80
[root@oldboy01 ~]# ps -ef | grep nginx
然后再检查站点配置文件:
[root@oldboy01 ~]# cat /etc/nginx/conf.d/blog.oldboylinux.cn.conf
仅仅看进程还不够,原笔记又加了一步非常实用的测试:
直接在站点目录里放一个纯静态页面。
[root@oldboy01 blog]# cat /app/code/blog/test.html
begin test
然后访问:
http://blog.oldboylinux.cn/test.html
如果这个页面能成功打开,至少能说明:
- Nginx 服务正常
- 站点目录路径基本没问题
- 静态资源返回链路正常
三、第二步:确认 Nginx 是否把 PHP 请求正确交给 PHP-FPM¶
当静态页正常,而动态页仍然异常时,就要继续检查 PHP 处理链路。
原笔记的方法是在站点目录中创建一个 phpinfo 页面:
<?php
phpinfo();
?>
文件名示例:
/app/code/blog/testinfo.php
然后访问:
http://blog.oldboylinux.cn/testinfo.php
如果能看到 phpinfo 页面,就说明:
- Nginx 已经能把
.php请求转发给 PHP-FPM - PHP-FPM 本身也能正常解析脚本
这一步相当于把“Web 层”和“PHP 解释层”单独验证了一次。
四、第三步:确认 PHP 到数据库的连接是否正常¶
如果静态页正常、phpinfo() 也正常,但 WordPress 仍报数据库错误,那就说明问题很可能在数据库层。
原笔记给了两种测试方法。
4.1 直接用数据库客户端测试¶
在外部机器上执行:
[root@oldboy02 ~]# mysql -ulidao -p1 -h172.16.1.20
如果能正常登录并看到业务库,说明数据库账号、密码和网络授权大体正确。
4.2 在网站目录里写一个 PHP 测试脚本¶
原笔记提供了一个 testmysql.php 示例:
<?php
$db_host='172.16.1.20';
$db_user='lidao';
$db_pass='1';
$db_name='lidao';
$link_id=mysqli_connect($db_host,$db_user,$db_pass,$db_name);
if($link_id){
echo "successful by oldboy lidao996! 库名字:$db_name 库用户:$db_user 库密码:$db_pass" ;
}else{
echo "connection failed! 库名字:$db_name 库用户:$db_user 库密码:$db_pass" ;
}
?>
访问这个页面后,如果显示连接成功,就说明:
- PHP 到数据库的网络连通没问题
- 数据库用户名和密码也正确
五、常见故障一:站点权限问题¶
原笔记单独列出了一类高频故障:
/app/code/blog/ 权限不正确,导致 WordPress 页面异常。
排查重点有两个。
5.1 看 Nginx 和 PHP-FPM 是否都使用 nginx 用户¶
[root@oldboy01 ~]# ps -ef | grep nginx
[root@oldboy01 ~]# ps -ef | grep php
如果 PHP-FPM 工作进程和 Nginx 工作进程不是同一个站点用户,后续访问文件和写配置时就容易出问题。
5.2 看站点目录的属主和属组是否正确¶
[root@oldboy01 ~]# ll /app/code/blog/
如果不是 nginx.nginx,就执行:
[root@oldboy01 ~]# chown -R nginx.nginx /app/code/blog/
这通常是 WordPress 初装阶段最常见的问题之一。
六、常见故障二:数据库连接信息错误¶
原笔记还列出了另一类高频问题:
数据库信息填错,导致程序无法连接数据库。
这种情况通常要回头确认:
- 数据库名是否正确
- 用户名是否正确
- 密码是否正确
- 授权白名单是否包含当前访问来源
如果之前在 WordPress 安装页填错了数据库信息,往往需要重新确认并重新设置。
七、把这套排查流程串起来¶
结合原笔记内容,LNMP 故障定位可以按下面顺序推进:
1、先看系统层:防火墙、SELinux、端口
2、再看 Nginx:进程、配置、静态页
3、再看 PHP:phpinfo() 是否正常
4、再看 MySQL:客户端登录和 PHP 脚本连接测试
5、最后回头检查权限和业务配置
这种从外到内、逐层剥离的方式,通常比一上来就盲目改配置更高效。
八、小结¶
LNMP 排错最怕的是把所有问题混在一起看。
原笔记给出的思路非常实用:先验证静态,再验证动态,再验证数据库,最后定位到权限或配置细节。只要按层排查,绝大多数 WordPress 初装问题都能更快找到原因。