收集用户反馈(如网站无法访问、报错页面)及系统/应用日志(如Nginx、MySQL的错误日志),明确故障类型(如502错误、数据库连接失败),这是排查的基础方向。
使用systemctl status nginx、systemctl status mysql(或mariadb)、systemctl status php-fpm命令,确认各组件是否处于active (running)状态。若服务未启动,尝试systemctl restart并查看日志定位失败原因。
/var/log/nginx/error.log(默认路径),重点关注连接PHP-FPM失败、静态文件权限等问题;/var/log/php-fpm/error.log或/var/log/php7-fpm.log(版本依赖),定位PHP代码语法错误、数据库连接失败等;/var/log/mysql/error.log或/var/log/mariadb/error.log,排查数据库启动失败、查询超报错等。使用top(实时进程)、df -h(磁盘空间)、free -m(内存使用)、iostat(磁盘IO)等命令,确认系统是否有资源瓶颈(如内存耗尽导致进程被杀、磁盘空间满导致服务无法写入)。
nginx -t检查配置文件(/etc/nginx/nginx.conf及站点配置)语法,若有错误需修复后reload(systemctl reload nginx);/etc/php/版本号/fpm/php.ini(主配置)及pool.d/www.conf(进程池配置),确认listen地址、pm.max_children等参数是否合理;/etc/mysql/my.cnf(或mariadb.conf.d/50-server.cnf),确认端口、字符集、innodb_buffer_pool_size等参数是否正确。ping命令检查服务器网络连通性(如ping 8.8.8.8);netstat -tulnp | grep ':80'(或ss -tulnp)检查Nginx是否监听80/443端口;telnet IP端口(如telnet localhost 3306)测试MySQL端口是否可达,排除防火墙/SELinux拦截。fastcgi_pass是否指向PHP-FPM的正确监听地址(如unix:/run/php-fpm/www.sock或127.0.0.1:9000);/var/run/php-fpm目录权限(需让Nginx用户(如nginx)可访问)。GRANT语句是否授权);firewall-cmd --add-port=3306/tcp --permanent后reload)。root路径是否指向正确的网站目录(如/var/www/html);chown -R nginx:nginx /var/www/html,确保Nginx用户有读取权限);getenforce若为Enforcing,可临时设为Permissive测试,或用chcon -R -t httpd_sys_content_t /var/www/html修改上下文)。firewall-cmd --list-all查看规则,确保允许HTTP(80)、HTTPS(443)流量,添加后reload;Enforcing模式,可临时设为Permissive(setenforce 0)排查是否为SELinux导致的问题,确认后修改/etc/selinux/config永久生效(SELINUX=permissive)。strace -p PHP_FPM_PID),查看PHP-FPM卡死或报错的具体原因;curl -I http://localhost),快速验证服务是否响应;/var/log/nginx/access.log),识别高频错误或异常请求。