温馨提示×

centos lnmp如何进行故障排查

小樊
61
2025-06-10 12:55:40
栏目: 智能运维

在CentOS上部署LNMP(Linux, Nginx, MySQL, PHP)环境时,故障排查是一个重要的技能。以下是一个系统化的故障排查步骤指南:

1. 确认故障现象

  • 收集用户反馈:了解用户报告的故障现象,如网站无法访问、错误页面等。
  • 系统告警:检查系统日志和应用程序日志,获取错误信息。

2. 检查系统资源使用情况

  • 使用 tophtopvmstatiostat 等命令检查CPU、内存、磁盘IO和网络等资源的使用情况,确定是否有资源瓶颈。

3. 查看日志文件

  • Nginx日志:通常位于 /var/log/nginx/error.log,查看是否有错误信息。
  • PHP-FPM日志:通常位于 /var/log/php-fpm/error.log,检查PHP代码中的错误。
  • MySQL日志:包括慢查询日志,通常位于 /var/log/mysql/error.log,检查数据库相关的错误。

4. 检查服务进程

  • 使用 pstopnetstat 等命令检查Nginx、PHP-FPM和MySQL等服务进程是否正常运行,查找是否存在占用资源过高或异常退出等问题。

5. 检查服务配置

  • 查看Nginx、PHP-FPM和MySQL等服务的配置文件,确认配置是否正确,并且是否存在被恶意修改的情况。

6. 检查网络连通性

  • 使用 pingtraceroutetelnet 等命令检查服务器之间的网络连通性,确认是否存在网络故障。

7. 调整错误报告级别

  • 在PHP代码中设置 error_reportingE_ALL,并在文件顶部添加 ini_set('display_errors', 1); 以显示所有错误,帮助定位PHP代码中的问题。

8. 修改配置文件并重启服务

  • 如果错误是由于配置问题导致的,修改相应的配置文件(如Nginx的 nginx.conf 或PHP-FPM的 pool.d/www.conf),然后重启服务以使更改生效。

9. 检查防火墙设置

  • 确保防火墙允许HTTP(端口80)和HTTPS(端口443)流量。可以使用命令 firewall-cmd --list-all 来检查防火墙规则。

10. 检查SELinux设置

  • SELinux可能会阻止Nginx和PHP-FPM的正常运行。可以使用命令 getenforce 来检查SELinux的状态。如果SELinux处于 enforcing 模式,可以尝试将其设置为 permissive 模式以进行测试:setenforce 0。更永久的方法是修改 /etc/selinux/config 文件,将 SELINUXenforcing 改为 SELINUXpermissive,然后重启系统。

11. 综合检查

  • 进程检查:使用 tophtop 命令查看系统进程状态。
  • 磁盘空间检查:使用 df -h 命令检查磁盘空间使用情况。
  • 内存检查:使用 free -m 命令检查内存使用情况。

12. 常见故障场景及解决方案

  • 502 Bad Gateway:检查PHP-FPM是否运行,检查Nginx与PHP-FPM的socket配置是否匹配,检查 /var/run/php-fpm 目录权限。
  • 数据库连接失败:检查MySQL服务状态,检查用户权限和密码,检查防火墙是否阻止3306端口。
  • 静态文件无法访问:检查文件权限 chown -R nginx:nginx /var/www/html,检查Nginx配置中的root路径,检查SELinux状态(如有)。

13. 使用调试工具

  • 根据需要安装调试工具,如 stracegdb 等,以便进一步分析和解决问题。

14. 更新系统和软件包

  • 确保系统和软件包都是最新版本,以修复已知的问题和安全漏洞。例如,使用 yum update 更新系统。

通过以上步骤,可以系统地排查和解决CentOS LNMP环境中的大多数问题。如果问题依然存在,建议提供具体的错误日志信息,以便进一步分析问题所在。

0