Linux Apache 配置虚拟主机详解
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
在现代 Web 服务器管理中,Apache 是最常用且最稳定的 Web 服务器软件之一,它支持多种操作系统,尤其在 Linux 系统 中表现尤为出色,为了满足多个网站在同一台服务器上运行的需求,Apache 提供了 虚拟主机(Virtual Host) 功能,通过配置虚拟主机,可以在一台 Apache 服务器上托管多个域名,每个域名可以指向不同的网站内容,本文将详细介绍如何在 Linux 系统下配置 Apache 的虚拟主机。
虚拟主机(Virtual Host)是指在一台物理服务器上运行多个网站的服务模式,Apache 通过 基于名称 或 基于 IP 的虚拟主机技术,实现多个网站共享同一台服务器资源。
根据配置方式的不同,虚拟主机主要分为以下两种类型:
-
基于名称的虚拟主机(Name-based Virtual Host)
通过不同的域名访问不同的网站内容,多个域名共享同一个 IP 地址,这是最常见的一种方式,适用于大多数网站托管场景。 -
基于 IP 的虚拟主机(IP-based Virtual Host)
每个网站绑定不同的 IP 地址,适用于需要为每个网站分配独立 IP 的特殊场景,如某些 SSL 证书的使用需求。
在大多数实际应用中,基于名称的虚拟主机更为常见和实用,因为它能够有效节省 IP 地址资源,同时配置也更加灵活。
环境准备
在开始配置虚拟主机之前,确保以下条件已满足:
- 已安装 Linux 系统(如 CentOS、Ubuntu 等)
- 已安装 Apache 服务器(如
httpd
或Apache2
) - 具备基本的命令行操作能力
- 拥有至少两个可用域名或子域名(用于测试)
安装 Apache
以 Ubuntu 系统为例,安装 Apache 可使用以下命令:
sudo apt update sudo apt install apache2
对于 CentOS 系统:
sudo yum install httpd
安装完成后,启动 Apache 并设置开机自启:
Ubuntu:
sudo systemctl start apache2 sudo systemctl enable apache2
CentOS:
sudo systemctl start httpd sudo systemctl enable httpd
配置基于名称的虚拟主机
我们以配置两个网站 example.com
和 testsite.com
为例,演示如何配置基于名称的虚拟主机。
创建网站目录
为每个网站创建独立的目录,用于存放网站文件:
sudo mkdir -p /var/www/example.com/public_html sudo mkdir -p /var/www/testsite.com/public_html
为每个目录创建一个简单的测试页面:
echo "Hello from example.com" | sudo tee /var/www/example.com/public_html/index.html echo "Hello from testsite.com" | sudo tee /var/www/testsite.com/public_html/index.html
配置虚拟主机文件
在 Apache 中,虚拟主机的配置文件通常位于以下目录:
- Ubuntu:
/etc/apache2/sites-available/
- CentOS:
/etc/httpd/conf.d/
创建两个配置文件:
1)example.com.conf
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80> ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com_error.log CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined </VirtualHost>
2)testsite.com.conf
sudo nano /etc/apache2/sites-available/testsite.com.conf
<VirtualHost *:80> ServerAdmin admin@testsite.com ServerName testsite.com ServerAlias www.testsite.com DocumentRoot /var/www/testsite.com/public_html ErrorLog ${APACHE_LOG_DIR}/testsite.com_error.log CustomLog ${APACHE_LOG_DIR}/testsite.com_access.log combined </VirtualHost>
注意:在 CentOS 上,通常将虚拟主机配置文件放置在
/etc/httpd/conf.d/
目录中,文件名以.conf
结尾即可。
启用虚拟主机配置
在 Ubuntu 上,使用 a2ensite
命令启用站点配置:
sudo yum install httpd0
然后重新加载 Apache 配置:
sudo yum install httpd1
在 CentOS 上,只需重启 Apache 即可:
sudo yum install httpd2
修改本地 hosts 文件(可选)
如果尚未将域名解析到服务器 IP,可以在本地主机上修改 hosts
文件进行测试:
- Windows 路径:
C:\Windows\System32\drivers\etc\hosts
- Linux/Mac 路径:
/etc/hosts
请将168.1.100
替换为你的服务器实际 IP):
sudo yum install httpd3
测试虚拟主机配置
打开浏览器,分别访问:
http://example.com
http://testsite.com
如果能看到不同的测试页面内容,说明虚拟主机已经配置成功。
配置注意事项
在配置过程中,请注意以下几点:
-
监听端口:默认情况下,Apache 监听的是 80 端口,如果需要使用其他端口,需在
ports.conf
文件中添加Listen 8080
,并在虚拟主机配置中将端口修改为*:8080
。 -
权限设置:确保网站目录的权限设置正确,Ubuntu 通常使用
www-data
用户和组,而 CentOS 使用apache
用户和组。 -
日志文件:检查日志文件
/var/log/apache2/
(Ubuntu)或/var/log/httpd/
(CentOS)中的错误信息,有助于排查配置问题。 -
防火墙设置:确保服务器防火墙允许 80 端口访问,以保证外部可以正常访问网站。
-
SSL 支持:如需启用 HTTPS,还需为每个虚拟主机配置 SSL 证书,并监听 443 端口。
通过以上步骤,我们成功地在 Linux 系统下配置了 Apache 的虚拟主机功能,无论是用于开发测试,还是生产环境部署,Apache 的虚拟主机功能都能提供灵活、高效的多站点托管方案。
掌握虚拟主机的配置方法,是每一位 Web 管理员或开发者必须具备的基础技能,随着 Web 技术的发展,虽然 Nginx 在高并发场景下越来越受欢迎,但 Apache 凭借其 成熟稳定、模块丰富、兼容性强 等优势,仍然在众多场景中被广泛使用。
合理配置 Apache 虚拟主机,不仅能提高服务器资源利用率,还能提升网站管理的灵活性与可维护性,如果你正在学习 Linux 系统运维或 Web 服务器管理,建议多加练习虚拟主机的配置,理解其原理与细节,将有助于你更深入地掌握 Apache 服务器的使用技巧。
如需进一步学习,建议查阅官方文档或深入了解 Apache 模块如 mod_rewrite
、mod_SSL
等功能,以扩展服务器的功能与安全性。