在Linux系统中使用Apache配置虚拟主机是实现多网站托管的关键技术,通过合理的配置可以在同一台服务器上运行多个独立的网站,每个域名拥有独立的目录结构和配置参数,以下将详细介绍虚拟主机的配置步骤、常见类型及优化要点。

准备工作
在开始配置前,需确保系统已安装Apache服务,以Ubuntu/Debian系统为例,可通过apt update && apt install apache2命令完成安装,对于CentOS/RHEL系统,则使用yum install httpd,安装完成后,检查Apache服务状态systemctl status apache2(或httpd),确保服务正常运行,需要准备至少两个已解析到服务器公网IP的域名,例如example.com和test.com。
创建网站目录结构
为每个虚拟主机创建独立的网站目录是基础步骤,建议按照/var/www/域名的结构组织文件,
sudo mkdir -p /var/www/example.com/public_html sudo mkdir -p /var/www/test.com/public_html
为目录设置适当的权限,确保Apache进程可以访问:
sudo chown -R $USER:$USER /var/www/example.com/public_html sudo chown -R $USER:$USER /var/www/test.com/public_html sudo chmod -R 755 /var/www
在每个网站目录中创建测试文件index.html可包含域名标识以便后续验证。

配置基于名称的虚拟主机
基于名称的虚拟主机是最常用的配置方式,通过域名区分不同的网站,首先创建虚拟主机配置文件,Apache的配置文件通常位于/etc/apache2/sites-available/(Ubuntu)或/etc/httpd/conf.d/(CentOS)目录下,为每个域名创建独立的配置文件,例如example.com.conf:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
配置文件中需指定ServerName为主域名,ServerAlias为备选域名,DocumentRoot为网站根目录,同样方式为test.com创建配置文件。
启用虚拟主机配置
创建配置文件后,需启用站点并禁用默认站点(可选),在Ubuntu系统中使用a2ensite example.com.conf命令启用站点,通过a2dissite 000-default.conf禁用默认站点,在CentOS系统中,需将配置文件重命名为example.com.conf并确保文件扩展名为.conf,Apache会自动加载conf.d目录下的配置文件,使用apache2ctl configtest(或apachectl configtest)检查配置语法是否正确,无误后重启Apache服务systemctl restart apache2。
配置HTTPS支持(可选)
为网站启用HTTPS可提升安全性,首先安装Let’s Encrypt免费证书:

sudo apt install certbot python3-certbot-apache # Ubuntu sudo yum install certbot python3-certbot-apache # CentOS
使用certbot --apache -d example.com -d www.example.com命令自动获取证书并配置Apache,Certbot会自动修改虚拟主机配置文件,添加SSL相关指令并启用HTTP到HTTPS的重定向。
虚拟主机高级配置
- 日志管理:可通过
CustomLog指令自定义日志格式,例如CustomLog "|/usr/bin/rotatelogs /var/log/apache2/example.com_%Y%m%d.log 86400" combined实现日志按天轮转。 - 访问控制:使用
<Directory>指令限制目录访问权限,<Directory /var/www/example.com/private> Require ip 192.168.1.0/24 </Directory>
- 重定向配置:通过
Redirect指令实现域名跳转,例如Redirect permanent /oldpage.html http://example.com/newpage.html。
故障排查
配置完成后,若网站无法访问,可按以下步骤排查:
- 检查域名解析是否正确指向服务器IP,使用
nslookup example.com验证。 - 查看Apache错误日志
tail -f /var/log/apache2/error.log定位问题。 - 确认防火墙规则允许HTTP/HTTPS流量,Ubuntu中使用
ufw allow 80,443/tcp,CentOS中使用firewall-cmd --permanent --add-service={http,https}。 - 检查文件权限和SELinux上下文(CentOS系统)是否正确。
通过以上步骤,即可成功在Linux系统中配置Apache虚拟主机,实现多网站的独立运行与管理,合理的配置不仅能提升服务器资源利用率,还能为不同网站提供灵活的管理方案,建议在实际操作前备份原有配置文件,并在测试环境中验证配置的正确性。



















