在 CentOS 上,“apache2 无法访问”通常有几个常见原因(注意:CentOS 上 Apache 一般叫 httpd,而不是 apache2,apache2 是 Debian/Ubuntu 的叫法)。下面按最常见情况逐个排查:
CentOS 默认是:
systemctl status httpd
systemctl start httpd
而不是 apache2
确认是否安装:
rpm -qa | grep httpd
systemctl status httpd
若未运行:
systemctl start httpd
systemctl enable httpd
CentOS 默认启用 firewalld
查看:
firewall-cmd --list-all
放行 HTTP:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
如果是云服务器,还要在 安全组 放通 80/443。
查看:
getenforce
如果是 Enforcing,可能阻止访问。
临时测试:
setenforce 0
若此时能访问,说明是 SELinux 问题。
永久解决(推荐):
setsebool -P httpd_can_network_connect 1
或放行 Web 目录:
semanage fcontext -a -t httpd_sys_content_t "/var/www(/.*)?"
restorecon -Rv /var/www
Apache 默认目录:
/var/www/html
确保:
chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html
检查配置:
grep Listen /etc/httpd/conf/httpd.conf
应有:
Listen 80
httpd -t
若有错误,按提示修改。
curl http://localhosthttps 访问 httptail -f /var/log/httpd/error_log
tail -f /var/log/httpd/access_log
httpd 不是 apache2如果你愿意,可以把 具体错误信息 / 浏览器提示 / 日志内容 发出来,我可以直接帮你定位是哪一步的问题。