CentOS LAMP故障排查指南
LAMP(Linux、Apache、MySQL、PHP)是CentOS系统上常见的Web服务组合,故障排查需遵循“从基础到具体”的逻辑,逐步定位问题根源。以下是系统化的排查步骤与常见解决方法:
首先检查Apache(httpd)、MySQL(mysqld/mariadb)、PHP-FPM(若使用)是否处于运行状态。使用以下命令查看服务状态:
sudo systemctl status httpd
sudo systemctl status mysqld # 或 mariadb(CentOS 8+默认)
sudo systemctl status php-fpm # 若使用PHP-FPM
若服务未启动,用sudo systemctl start <服务名>启动;若需开机自启,执行sudo systemctl enable <服务名>。
日志是故障定位的核心依据,需重点查看以下日志的最新条目(使用tail -f实时跟踪):
/var/log/httpd/error_log(记录HTTP请求、模块加载等问题);/var/log/mysqld.log(记录数据库启动、查询错误);php.ini中的error_log参数指定(默认可能在/var/log/php-fpm/error.log或Apache日志中)。配置文件的语法错误会导致服务无法启动,需逐一验证:
apachectl configtest命令检查httpd.conf及包含的虚拟主机配置文件,若有错误会提示具体行号;/etc/my.cnf)语法,错误时会中断启动;php.ini中的关键参数(如memory_limit、upload_max_filesize),确保无拼写错误。Apache(默认80端口)、MySQL(默认3306端口)需开放且未被占用,使用以下命令检查:
sudo netstat -tulnp | grep ':80' # 检查80端口
sudo netstat -tulnp | grep ':3306' # 检查3306端口
若端口被占用,通过ps -ef | grep <进程名>找到占用进程,终止异常进程(kill -9 <PID>)或修改服务端口(如修改Apache的Listen指令)。
Web服务器需具备访问网站目录和文件的权限,通常设置:
644(所有者可读写,组和其他用户只读);755(所有者可读写执行,组和其他用户可读执行)。/path/to/webroot为网站根目录):sudo find /path/to/webroot -type f -exec chmod 644 {} \;
sudo find /path/to/webroot -type d -exec chmod 755 {} \;
SELinux(安全增强模块)可能阻止Apache或PHP访问文件,需调整:
sudo setenforce 0;/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,重启系统生效;chcon命令修改文件上下文(如sudo chcon -R -t httpd_sys_rw_content_t /path/to/webroot)。确保防火墙允许HTTP(80端口)、HTTPS(443端口)流量,使用firewalld管理:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
若使用iptables,需添加对应规则(如iptables -A INPUT -p tcp --dport 80 -j ACCEPT)。
httpd-devel)、端口冲突、配置文件错误;yum install httpd-devel安装依赖;通过netstat排查端口冲突;用apachectl configtest检查配置。/var/log/mysqld.log中的初始化错误;用mysql_secure_installation重置root密码;确保/var/lib/mysql目录权限为mysql:mysql。php.ini配置错误、文件扩展名未关联;httpd.conf)中添加LoadModule php_module modules/libphp.so并启用AddType application/x-httpd-php .php;检查php.ini中的short_open_tag(若使用短标签需开启);确保文件扩展名为.php。若出现页面加载慢、服务崩溃,需检查系统资源使用情况:
top(按CPU排序)或htop(更直观)查看CPU、内存占用;df -h检查磁盘使用率,避免根分区满导致服务异常;journalctl -xe或grep "Out of memory" /var/log/messages查找资源耗尽记录。ping www.baidu.com测试服务器是否能访问外网,traceroute排查路由问题;sudo yum update更新系统和软件包,修复已知漏洞;cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak),避免误操作导致服务瘫痪。通过以上步骤,可覆盖CentOS LAMP环境的大部分常见故障。若问题仍未解决,建议结合具体错误日志(如Apache的“Permission denied”、MySQL的“Cannot connect to database”)进一步分析,或参考官方文档获取针对性支持。