一、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 初装问题都能更快找到原因。