1. 什么是虚拟主机?为什么要用它?¶
在Linux服务器上,一台物理服务器可以通过“虚拟主机”技术同时运行多个网站,每个网站就像独立的“小服务器”一样对外提供服务。这样做的好处是节省服务器资源(不需要为每个网站单独购买服务器),适合个人开发者、小型团队或创业项目快速建站。
虚拟主机主要分为两类:基于域名(最常用)和基于IP(较少用)。本文重点讲解基于域名的虚拟主机配置,适合有域名的场景(或本地测试环境)。
2. 准备工作:安装Apache服务器¶
首先需要在Linux服务器上安装Apache(Web服务器软件)。不同Linux发行版安装命令不同,以下是常见系统的安装步骤:
CentOS/RHEL系统¶
# 安装Apache
sudo yum install httpd -y
# 启动Apache并设置开机自启
sudo systemctl start httpd
sudo systemctl enable httpd
# 检查状态(确认服务运行正常)
sudo systemctl status httpd
Ubuntu/Debian系统¶
# 安装Apache
sudo apt update
sudo apt install apache2 -y
# 启动Apache并设置开机自启
sudo systemctl start apache2
sudo systemctl enable apache2
# 检查状态
sudo systemctl status apache2
验证安装成功¶
安装完成后,打开浏览器访问服务器的IP地址(例如 http://192.168.1.100),如果看到Apache默认页面,说明安装成功。
3. 准备网站文件与目录¶
虚拟主机需要为每个网站创建独立的文件存放目录。以两个示例网站(site1.com 和 site2.com)为例:
# 创建site1和site2的网站根目录
sudo mkdir -p /var/www/site1/public
sudo mkdir -p /var/www/site2/public
# 创建简单的测试页面(site1的首页)
echo "欢迎来到 Site1" | sudo tee /var/www/site1/public/index.html
# 创建site2的首页
echo "欢迎来到 Site2" | sudo tee /var/www/site2/public/index.html
4. 配置虚拟主机(核心步骤)¶
Apache通过配置文件管理虚拟主机。以Ubuntu为例,配置文件存放在 /etc/apache2/sites-available/;CentOS则在 /etc/httpd/conf.d/ 目录下。这里以Ubuntu为例讲解,步骤通用。
步骤1:创建虚拟主机配置文件¶
进入配置文件目录,为每个网站创建独立的配置文件(以 site1.conf 和 site2.conf 为例):
# 进入Apache配置目录
cd /etc/apache2/sites-available
# 创建site1的配置文件
sudo nano site1.conf
# 创建site2的配置文件
sudo nano site2.conf
步骤2:编写site1的虚拟主机配置¶
在 site1.conf 中写入以下内容(替换域名和目录路径为实际值):
<VirtualHost *:80>
# 网站管理员邮箱(可自定义)
ServerAdmin webmaster@site1.com
# 网站主域名(必选)
ServerName www.site1.com
# 支持不带www的域名(可选,如site1.com)
ServerAlias site1.com
# 网站文件存放的根目录(前面创建的目录)
DocumentRoot /var/www/site1/public
# 目录权限设置(允许访问网站文件)
<Directory /var/www/site1/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 错误日志和访问日志路径
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
步骤3:编写site2的虚拟主机配置¶
在 site2.conf 中重复上述步骤,仅修改域名和目录路径:
<VirtualHost *:80>
ServerAdmin webmaster@site2.com
ServerName www.site2.com
ServerAlias site2.com
DocumentRoot /var/www/site2/public
<Directory /var/www/site2/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>
步骤4:启用虚拟主机配置¶
Ubuntu需要手动启用配置文件(CentOS直接重启即可):
# 启用site1和site2的配置
sudo a2ensite site1.conf
sudo aensite site2.conf
# 检查配置是否正确(避免语法错误)
sudo apache2ctl configtest
# 重启Apache使配置生效
sudo systemctl restart apache2
5. 测试虚拟主机(本地/公网访问)¶
配置完成后,需要验证是否能正常访问两个网站。
本地测试(无真实域名时)¶
如果没有购买域名,可通过修改本地 hosts 文件模拟域名访问:
-
Windows系统:打开
C:\Windows\System32\drivers\etc\hosts,添加一行:
127.0.0.1 www.site1.com
127.0.0.1 www.site2.com -
Linux/Mac系统:打开终端,执行以下命令:
sudo nano /etc/hosts
# 添加一行:
127.0.0.1 www.site1.com
127.0.0.1 www.site2.com
保存后,直接在浏览器输入 http://www.site1.com 和 http://www.site2.com,应分别显示两个网站的首页内容。
公网测试(有真实域名时)¶
如果已购买域名,需将域名的DNS解析指向服务器IP(例如 A记录 指向 192.168.1.100),然后在浏览器输入 http://www.site1.com 即可访问。
6. 常见问题与解决办法¶
- 403 Forbidden错误:通常是网站目录权限不足。执行
sudo chown -R www-data:www-data /var/www/site1/public(Ubuntu)或sudo chown -R apache:apache /var/www/site1/public(CentOS)。 - Apache启动失败:执行
sudo apache2ctl configtest(Ubuntu)或sudo httpd -t(CentOS)检查配置语法错误。 - 域名无法访问:检查DNS解析是否生效(可通过
ping www.site1.com验证),或确认hosts文件是否正确添加域名。
7. 总结¶
通过本文,你已完成Linux服务器上Apache多站点的搭建:
1. 安装并启动Apache;
2. 创建独立网站目录和首页文件;
3. 配置基于域名的虚拟主机;
4. 通过本地hosts或公网域名测试访问。
虚拟主机的核心是“隔离配置”,每个网站的配置互不干扰,适合快速扩展网站数量。后续可继续添加SSL证书(HTTPS)、反向代理等功能,进一步优化服务器性能。