在 CentOS 上,Apache 通常叫 httpd(不是 apache2,apache2 是 Debian/Ubuntu 的叫法)。下面以 CentOS 7/8 + Apache(httpd) 为例,讲如何配置虚拟主机(Virtual Host)。
# 安装
sudo yum install httpd -y
# 启动并设置开机自启
sudo systemctl start httpd
sudo systemctl enable httpd
# 查看状态
sudo systemctl status httpd
假设我们有两个站点:
example1.com → /var/www/example1example2.com → /var/www/example2sudo mkdir -p /var/www/example1/public_html
sudo mkdir -p /var/www/example2/public_html
echo "example1" | sudo tee /var/www/example1/public_html/index.html
echo "example2" | sudo tee /var/www/example2/public_html/index.html
sudo chown -R apache:apache /var/www
sudo chmod -R 755 /var/www
CentOS 推荐把虚拟主机放在:
/etc/httpd/conf.d/
sudo vi /etc/httpd/conf.d/example1.com.conf
内容:
<VirtualHost *:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1/public_html
<Directory /var/www/example1/public_html>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/example1_error.log
CustomLog /var/log/httpd/example1_access.log combined
</VirtualHost>
sudo vi /etc/httpd/conf.d/example2.com.conf
内容同上,改路径和域名即可。
# 语法检查
sudo httpd -t
# 重启
sudo systemctl restart httpd
如果还没解析域名,可以改本地 hosts:
# Linux / macOS
sudo vi /etc/hosts
# Windows
C:\Windows\System32\drivers\etc\hosts
添加:
127.0.0.1 example1.com
127.0.0.1 example2.com
浏览器访问:
http://example1.com
http://example2.com
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
推荐用 Let’s Encrypt:
sudo yum install certbot python3-certbot-apache -y
sudo certbot --apache
❌ Ubuntu 的 apache2 ≠ CentOS 的 httpd
❌ 虚拟主机不要写进 httpd.conf,用 conf.d/*.conf
❌ SELinux 可能导致 403(可临时测试 setenforce 0)
如果你告诉我:
我可以给你更精确的配置。