“CentOS + Apache 配不好”是个很常见的问题,通常不是 Apache 本身难,而是环境、权限、防火墙、SELinux、配置细节这几块容易踩坑。下面我按最常见失败原因给你梳理一下,你可以对照看看卡在哪。
CentOS 默认 SELinux 是开启的,会导致:
快速排查:
getenforce
Enforcing → 很可能是它的问题临时验证:
setenforce 0
能访问了 → 就是 SELinux
正确做法(推荐):
# 允许 httpd 访问目录
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html
firewall-cmd --list-all
如果没有 http:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Apache 默认用户是:
apache
错误示例:
chmod 777 /var/www/html # 不推荐
正确做法:
chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html
systemctl status httpd
journalctl -xe
常见错误:
httpd -t
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
注意:
Require all grantedAllow from all(老语法)<VirtualHost *:80>
ServerName test.com
DocumentRoot /var/www/test
</VirtualHost>
还必须要:
<Directory /var/www/test>
Require all granted
</Directory>
并且:
httpd -t
systemctl restart httpd
如果你愿意,直接贴:
cat /etc/redhat-release)我可以一步一步帮你排错,甚至直接给你一份能用的配置。