Apache多域名托管核心依靠基于名称的虚拟主机,通过Host请求头区分域名并指向独立目录,需确保配置完整、顺序合理、权限与DNS解析到位。

一、确保基础服务就绪
确认 Apache 已安装并运行:systemctl status apache2(Ubuntu/Debian)或 systemctl status httpd(CentOS/RHEL)。能访问服务器 IP 显示默认页,说明服务正常。
检查主配置是否启用虚拟主机支持:
- Ubuntu/Debian:确认
/etc/apache2/apache2.conf中有IncludeOptional sites-enabled/*.conf - CentOS/RHEL:确认
/etc/httpd/conf/httpd.conf中有Include conf/extra/httpd-vhosts.conf或类似行已取消注释 - 运行
apache2ctl -t或httpd -t验证语法,输出 Syntax OK 才继续
二、为每个域名建独立目录和权限
避免混用路径,每个站点必须有专属根目录:
sudo mkdir -p /var/www/example.com/public_htmlsudo mkdir -p /var/www/test.net/public_html- 设置所有权(以 Ubuntu 为例):
sudo chown -R $USER:www-data /var/www/example.com/public_html - 设置读取权限:
sudo chmod -R 755 /var/www/example.com - 各目录下放一个简单
index.html用于测试,比如写<h1>example.com</h1>
三、配置虚拟主机文件(重点在 ServerName + ServerAlias)
每个域名一个配置文件,推荐放在 /etc/apache2/sites-available/(Ubuntu/Debian)或 /etc/httpd/conf.d/(CentOS/RHEL)。
例如 example.com.conf 内容如下:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<Directory "/var/www/example.com/public_html">
Require all granted
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
注意要点:
-
ServerName是唯一主域名,必填且只能一个 -
ServerAlias放其他别名(空格分隔),支持通配符如*.example.com(仅前缀) - 两个站点不能共用相同
ServerName或ServerAlias,否则后加载的会被忽略 - HTTPS 站点需另配
<VirtualHost *:443>块,并启用 SSL 模块和证书
四、启用配置并验证访问
启用站点(Ubuntu/Debian):
sudo a2ensite example.com.confsudo a2ensite test.net.conf- 禁用默认站可选:
sudo a2dissite 000-default.conf
重载服务生效:
-
sudo systemctl reload apache2(推荐,不中断连接) - 或
sudo systemctl restart apache2
最后检查:
- DNS 是否已将
example.com和test.net的 A 记录指向服务器公网 IP - 防火墙是否放行 80(和 443)端口:
sudo ufw allow 'Apache Full' - 查错误日志定位问题:
sudo tail -f /var/log/apache2/error.log

















