下面以 Linux(如 Ubuntu / CentOS) 环境下的 Apache 为例,介绍**设置虚拟主机(Virtual Host)**的完整流程。内容适用于 基于域名的虚拟主机(最常用)。
通过虚拟主机,可以在 一台服务器上运行多个网站,例如:
www.site1.comwww.site2.com它们共用一个 Apache 服务,但访问不同的目录和配置。
已安装 Apache
apachectl -v
如未安装:
# Ubuntu / Debian
sudo apt update
sudo apt install apache2
# CentOS / RHEL
sudo yum install httpd
拥有域名(或本地测试用 hosts 文件模拟)
sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html
设置权限:
sudo chown -R apache:apache /var/www/site1.com
sudo chown -R apache:apache /var/www/site2.com
Ubuntu 默认用户是
www-data,CentOS 是apache
echo "site1.com" > /var/www/site1.com/public_html/index.html
echo "site2.com" > /var/www/site2.com/public_html/index.html
sudo nano /etc/apache2/sites-available/site1.com.conf
sudo nano /etc/httpd/conf.d/site1.com.conf
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/public_html
<Directory /var/www/site1.com/public_html>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/site1_error.log
CustomLog /var/log/apache2/site1_access.log combined
</VirtualHost>
如果是 CentOS,日志路径改为:
ErrorLog logs/site1_error.log
CustomLog logs/site1_access.log combined
sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
禁用默认站点(可选):
sudo a2dissite 000-default.conf
apachectl configtest
# Ubuntu
sudo systemctl restart apache2
# CentOS
sudo systemctl restart httpd
修改本地 hosts 文件:
sudo nano /etc/hosts
添加:
127.0.0.1 site1.com
127.0.0.1 site2.com
浏览器访问:
http://site1.com
http://site2.com
ServerName 不匹配Require all granted 未配置sudo netstat -tlnp | grep :80
.htaccess)如果你愿意,可以告诉我:
我可以给你完全针对你环境的配置示例。