LNMP(Linux+Nginx+MySQL/MariaDB+PHP)是CentOS上常见的网站架构,故障排查需遵循从现象到根源的系统化流程,覆盖服务状态、配置文件、权限、网络等核心维度。
top(查看CPU/内存占用)、free -h(查看内存/交换分区使用)、df -h(查看磁盘空间)命令,确认系统资源是否充足(如磁盘空间不足可能导致服务崩溃)。systemctl status nginx、systemctl status mysqld(或mariadb)、systemctl status php-fpm命令,检查各组件是否处于active (running)状态。若服务未启动,尝试systemctl restart 服务名并观察重启是否成功。/var/log/nginx/error.log(记录Nginx启动、请求处理错误);/var/log/php-fpm/error.log(记录PHP脚本执行错误、FPM进程问题);/var/log/mysqld.log(或/var/log/mysql/error.log,记录数据库启动、查询错误)。tail -f 日志文件实时查看最新错误信息,快速定位问题根源。nginx -t命令检查配置文件语法(如/etc/nginx/nginx.conf及包含的server块配置),根据提示修复错误;netstat -tulnp | grep 80(或ss -tulnp | grep 80)检查80端口是否被其他进程占用(如Apache),停止冲突进程后再启动Nginx;gcc-c++、pcre-devel、zlib-devel),可通过yum install gcc-c++ pcre-devel zlib-devel -y安装。php-fpm -t命令检查配置文件语法(如/etc/php-fpm.conf或/etc/php/7.x/fpm/php-fpm.conf),修复错误;listen = 127.0.0.1:9000)是否与其他服务冲突,修改端口或停止冲突服务;user = nginx)有权限访问网站目录(如/usr/share/nginx/html),使用chown -R nginx:nginx /usr/share/nginx/html修改权限。systemctl status nginx确认Nginx是否运行,未运行则启动;firewall-cmd --list-all检查防火墙是否开放80/443端口,未开放则执行firewall-cmd --add-service=http --permanent、firewall-cmd --add-service=https --permanent、firewall-cmd --reload;nslookup 域名确认域名是否解析到服务器公网IP;fastcgi_pass指令是否指向正确的PHP-FPM地址(如127.0.0.1:9000),修改后重启Nginx。fastcgi_pass地址错误。systemctl status php-fpm),未运行则启动;fastcgi_pass指令与PHP-FPM监听地址一致(如listen = 127.0.0.1:9000对应fastcgi_pass 127.0.0.1:9000);getenforce显示Enforcing时),临时关闭SELinux(setenforce 0)测试是否解决问题,若解决则修改/etc/selinux/config将SELINUX=enforcing改为SELINUX=permissive。mysqld --validate-config(或mysql --help)检查配置文件语法(如/etc/my.cnf或/etc/mysql/my.cnf),修复错误;/var/lib/mysql)权限,确保mysql用户拥有所有权(chown -R mysql:mysql /var/lib/mysql);netstat -tulnp | grep 3306检查3306端口是否被占用,停止冲突进程;df -h检查磁盘空间,清理无用文件释放空间。ls -l /path/to/website检查目录权限,确保Nginx用户(如nginx)有读取权限(chmod -R 755 /path/to/website);setsebool -P httpd_can_network_connect 1允许Nginx访问网络,或chcon -R -t httpd_sys_content_t /path/to/website修改目录安全上下文。tar或rsync备份网站数据、数据库(mysqldump),避免数据丢失;Zabbix、Prometheus等工具监控服务器资源(CPU、内存、磁盘),及时预警异常;yum update更新Nginx、MySQL、PHP及相关依赖,修补安全漏洞;logrotate(默认已启用)管理日志文件大小,避免日志占满磁盘(如/etc/logrotate.d/nginx)。