你的问题比较宽泛,“CentOS 上 Apache 怎样设置”可以包含安装、启动、虚拟主机、防火墙、权限等多个方面。下面我按最常见、最实用的场景给你一个完整指南(以 CentOS 7 / 8 / Stream 为例,Apache 服务名是 httpd)。
# CentOS 7/8
sudo yum install httpd -y
# CentOS Stream / 新版
sudo dnf install httpd -y
sudo systemctl start httpd
sudo systemctl enable httpd
查看状态:
systemctl status httpd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
如果是云服务器,还要在安全组放行 80、443。
浏览器访问:
http://服务器IP
看到 Apache Test Page 即成功。
/var/www/html
放入 index.html 即可访问。
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
示例:配置 www.example.com
sudo mkdir -p /var/www/example
sudo echo "Hello Example" > /var/www/example/index.html
sudo vi /etc/httpd/conf.d/example.conf
内容:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example
<Directory /var/www/example>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
sudo systemctl restart httpd
在虚拟主机或目录中:
AllowOverride All
并确认:
sudo setsebool -P httpd_can_network_connect on
(CentOS 默认开启 SELinux)
如果访问 403:
# 修改目录所有者
sudo chown -R apache:apache /var/www/example
# 修改权限
sudo chmod -R 755 /var/www
SELinux 问题:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example(/.*)?"
sudo restorecon -Rv /var/www/example
sudo yum install mod_ssl -y
证书配置:
/etc/httpd/conf.d/ssl.conf
或用 Let’s Encrypt:
sudo yum install certbot python3-certbot-apache
sudo certbot --apache
systemctl start httpd
systemctl stop httpd
systemctl restart httpd
systemctl status httpd
httpd -t # 检查配置语法
如果你能告诉我:
我可以给你更精确的配置方案。