LAMP在CentOS上的故障排查指南
日志是排查LAMP故障的核心工具,通过错误日志可快速定位问题本质。
/var/log/httpd/error_log
(CentOS默认使用httpd),使用tail -n 50 /var/log/httpd/error_log
查看最近50条错误记录,或grep 'error' /var/log/httpd/error_log
过滤关键词。/var/log/mysqld.log
(原生MySQL)或/var/log/mariadb/mariadb.log
(MariaDB,默认替代MySQL),使用tail -n 50 /var/log/mysqld.log
查看错误信息。journalctl -xe
查看近期系统日志,或journalctl -u httpd.service
(Apache)、journalctl -u mysqld.service
(MySQL)查看特定服务日志,快速定位与服务相关的错误。使用systemctl
命令检查LAMP各组件服务状态,判断是否启动或存在故障:
systemctl status httpd
,若未运行,执行systemctl start httpd
启动;若启动失败,需结合日志进一步排查。systemctl status mysqld
(原生)或systemctl status mariadb
(MariaDB),未运行时执行systemctl start mysqld
;启动失败需检查配置文件或数据目录权限。systemctl status php-fpm
,确保服务运行,避免PHP页面无法解析。配置文件错误是服务无法启动的常见原因,需通过工具验证语法并检查关键设置:
apachectl configtest
命令检查httpd.conf
(主配置文件)及包含的虚拟主机配置文件(如/etc/httpd/conf.d/*.conf
)的语法,若有错误需修正后重启。/etc/my.cnf
(原生)或/etc/mysql/my.cnf
(MariaDB)的关键参数,如socket
路径(需与Apache/PHP的socket路径一致)、datadir
(数据目录权限);使用mysqlcheck --all-databases -u root -p
验证数据库完整性。php.ini
(路径可通过phpinfo()
查看)的关键设置,如short_open_tag
(若使用短标签需开启)、memory_limit
(避免脚本内存不足);创建/var/www/html/info.php
(内容为<?php phpinfo(); ?>
)通过浏览器访问,确认PHP是否正常解析。端口占用或防火墙限制会导致服务无法从外部访问,需检查端口状态并调整规则:
netstat -tuln | grep -E '80|3306|9000'
(80为HTTP、3306为MySQL、9000为PHP-FPM默认端口),若端口被占用,通过lsof -i :80
找到占用进程,终止或修改其端口。firewalld
,执行firewall-cmd --permanent --zone=public --add-service=http
和firewall-cmd --permanent --zone=public --add-service=https
开放HTTP/HTTPS端口,然后firewall-cmd --reload
生效;若使用传统iptables
,执行iptables -I INPUT -p tcp --dport 80 -j ACCEPT
并service iptables save
保存规则。ping <服务器IP>
测试本地网络,traceroute <目标IP>
跟踪数据包路径,确保网络无中断;若为域名访问,使用nslookup <域名>
检查DNS解析是否正确。SELinux可能阻止Apache/MySQL访问文件或端口,需调整策略:
setenforce 0
(重启后恢复),测试是否解决问题;若问题消失,需永久修改/etc/selinux/config
中的SELINUX=permissive
(宽松模式)或disabled
(禁用)。/var/www/html
),执行chcon -R -t httpd_sys_content_t /var/www/html
设置正确上下文;若需MySQL访问特定目录,执行chcon -R -t mysqld_db_t /path/to/directory
。错误的权限会导致Apache无法读取文件、MySQL无法写入数据目录:
/var/www/html
目录权限为755
(chmod 755 /var/www/html
),文件权限为644
(find /var/www/html -type f -exec chmod 644 {} \;
),所有者为apache
(chown -R apache:apache /var/www/html
)。/var/lib/mysql
(原生MySQL)或/var/lib/mysql
(MariaDB)的权限,确保mysql
用户拥有所有权(chown -R mysql:mysql /var/lib/mysql
)。/var/log/httpd
)、MySQL(/var/log/mysqld.log
)的日志目录可写(chmod 755 /var/log/httpd
,chown mysql:mysql /var/log/mysqld.log
)。LAMP组件依赖不足或安装失败会导致服务无法启动:
yum install -y httpd mariadb-server php php-mysqlnd
安装Apache、MySQL(MariaDB)、PHP及PHP-MySQL扩展,确保所有依赖已满足。yum remove httpd mariadb-server php
卸载组件,删除残留配置文件(如/etc/httpd
、/etc/my.cnf
),然后重新安装。df -h
检查磁盘空间,若/
分区使用率超过80%,需清理无用文件(如/var/log
日志)释放空间。