在 CentOS 上配置 Apache(通常是 httpd 服务)时,有几个常见但容易踩坑的点。下面按「安装 → 配置 → 权限 → 安全 → 排错」给你梳理一下。
yum install httpd -y
# 或 CentOS 8+
dnf install httpd -y
systemctl start httpd
systemctl enable httpd
⚠️ 注意:
systemctlhttpd start(容易和环境变量冲突)CentOS 默认开启了 firewalld,不放开端口是访问不到的。
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
如果是云服务器,还要在安全组放行 80 / 443。
CentOS 默认开启 SELinux,这是 Apache 配置失败的高频原因。
Permission deniedgetenforce
# 修改网站目录上下文
semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
restorecon -Rv /data/www
⚠️ 不建议直接 setenforce 0 或禁用 SELinux(生产环境)
/var/www/html
chown -R apache:apache /var/www/html
chmod 755 /var/www/html
⚠️ Apache 用户是 apache,不是 www-data(那是 Ubuntu)
vi /etc/httpd/conf.d/www.example.com.conf
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html/example
<Directory /var/www/html/example>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
然后:
systemctl restart httpd
如果你用框架(Laravel / WordPress):
AllowOverride All
否则 rewrite 不生效。
yum install mod_ssl -y
证书推荐:
yum install certbot python2-certbot-apache
certbot --apache
tail -f /var/log/httpd/error_log
tail -f /var/log/httpd/access_log
80% 的问题看 error_log 就能解决。
✅ 防火墙没开
✅ SELinux 拦了
✅ 目录权限不对
✅ 配置文件放错位置
✅ 改完没重启 httpd
✅ 云服务器安全组没放行
如果你有具体场景(比如:单站点 / 多站点 / PHP / 反向代理 / CentOS 几),我可以给你更针对性的配置示例。