apache支持虚拟主机需启用模块、配置virtualhost块、设置documentroot与权限,并重启服务;需取消主配置中include注释、创建站点目录并赋权、写入servername与directory权限、配hosts解析,最后语法检查并重启。

确认主配置已启用虚拟主机支持
Apache 默认可能不加载虚拟主机配置,需手动开启:
- 打开主配置文件:/etc/apache2/apache2.conf(Ubuntu/Debian)或 /etc/httpd/conf/httpd.conf(CentOS/RHEL)
- 找到类似
Include conf/extra/httpd-vhosts.conf或IncludeOptional sites-enabled/*.conf的行,取消注释(删掉开头的#) - 确认监听端口已声明,例如存在
Listen 80;若要用 HTTPS,还需Listen 443并加载 SSL 模块 - 运行
sudo apache2ctl -t(Debian系)或sudo httpd -t(RHEL系)检查语法,输出 Syntax OK 才继续
创建网站目录并设置基本权限
每个虚拟主机必须对应一个可读写的物理目录,Apache 进程(如 www-data 或 apache 用户)需要执行权限:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 新建目录:例如
sudo mkdir -p /var/www/example.com/public_html - 放入测试页:
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html - 设所有权(Linux/macOS):
sudo chown -R $USER:www-data /var/www/example.com - 设目录权限:
sudo chmod -R 755 /var/www/example.com
添加基于域名的 VirtualHost 配置
这是最常用方式,多个域名指向同一 IP,靠 Host 头区分请求:
- 编辑
/etc/apache2/sites-available/example.com.conf(Debian系)或/etc/httpd/conf.d/example.com.conf(RHEL系) - 写入如下内容(注意替换域名和路径):
<virtualhost>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<directory>
Require all granted
AllowOverride None
</directory></virtualhost>
- Debian/Ubuntu 用户还需启用站点:
sudo a2ensite example.com.conf - 所有系统最后执行:
sudo systemctl restart apache2(或httpd)
本地测试需配 hosts 文件
没有真实 DNS 时,用本机 hosts 模拟域名解析:
- Linux/macOS 编辑
/etc/hosts,Windows 编辑C:\Windows\System32\drivers\etc\hosts - 添加一行:
127.0.0.1 example.com www.example.com - 浏览器访问
http://example.com,应看到测试页










