虚拟主机 (Virtual Host) 是在同一台机器搭建属于不一样域名或者基于不一样 IP 的多个网站服务的技术. 能够为运行在同一物理机器上的各个网站指配不一样的 IP 和端口, 也可以让多个网站拥有不一样的域名.php
Apache 是世界上使用最广的 Web 服务器, 从 1.1 版开始支持虚拟主机. 本文将讲解在不一样服务器 (Redhat Enterprise Linux, Ubuntu Linux, Windows) 上使用 Apache 搭建虚拟主机来搭建多个网站.web
本文旨在让读者知道如何在同一台机器上搭建多个网站, 并附带一些使用技巧. 以操做为主, 不会过多谈及原理.apache
本文是写给拥有必定的服务器配置和管理技能, 工做中须要同时维护多个网站的网站主, 网站开发者和网络管理员. 若是你是互联网公司的配管工程师, 对计算机服务器原理和操做十分熟悉, 请忽视本文, 你不会在上面找到太多有价值的东西.bash
Redhat Enterprise Linux (包括 CentOS Linux), 是使用最广的 Linux 服务器, 大量的网站应用都部署在其上.服务器
1. 打开文件 /etc/httpd/conf/httpd.conf, 搜索 VirtualHost example, 找到代码以下:网络
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
2. 仿照例子, 添加一段代码来指定某一域名的网站.网站
#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 须要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
ServerAdmin zhao.wuz@alibaba-inc.com
DocumentRoot /var/www/httpdocs/demo_aliluna_com
ServerName demo.aliluna.com
ErrorLog logs/demo.aliluna.com-error.log
CustomLog logs/demo.aliluna.com-access.log common
</VirtualHost>
3. 重启 httpd 服务, 执行如下语句.spa
service httpd restart
Ubuntu 在 Linux 各发行版中, 我的用户数量最多的. 不少人在本机和虚拟机中使用. 但 Ubuntu 和 Redhat 的 VirtualHost 设置方法不相同.操作系统
1. 打开目录 /etc/apache2/sites-available/, 发现 default 和 default-ssl 两个文件, 其中 default 是 http 虚拟主机服务的配置文件, default-ssl 是配置 https 服务使用的. 能够复制一份 default 文件. 并修改配置文件名, 文件名必须与域名一致 (如: demo.aliluna.com)rest
2. 打开新建的配置文件, 修改 DocumentRoot, ServerName 和对应的配置目录. 例子以下:
# # DocumentRoot 是网站文件存放的根目录 # ServerName 是网站域名, 须要跟 DNS 指向的域名一致 # <VirtualHost *:80> ServerAdmin zhao.wuz@alibaba-inc.com DocumentRoot /var/www/httpdocs/demo_aliluna_com ServerName demo.aliluna.com ErrorLog ${APACHE_LOG_DIR}/demo.aliluna.com-error.log CustomLog ${APACHE_LOG_DIR}/demo.aliluna.com-access.log combined </VirtualHost>
3. 经过 a2ensite 激活虚拟主机配置
sudo a2ensite demo.aliluna.com
4. 打开目录 /etc/apache2/sites-enabled/, 你会发现全部激活的虚拟主机, 能够经过 a2dissite 进行注销
sudo a2dissite demo.aliluna.com
5. 重启 Apache 服务, 激活虚拟主机
sudo /etc/init.d/apache2 restart
Windows 是市场占有率最高的 PC 操做系统, 也是不少人的开发环境. 其 VirtualHost 配置方法与 Linux 上有些差别, 如下方式适合原生 Apache, XAMPP 和 WAMP 套件.
1. 打开目录 {Apache2 安装目录}\conf\extra\, 找到 httpd-vhosts.conf 文件.
2. 仿照例子, 添加一段代码来指定某一域名的网站.
# # DocumentRoot 是网站文件存放的根目录 # ServerName 是网站域名, 须要跟 DNS 指向的域名一致 # <VirtualHost *:80> ServerAdmin zhao.wuz@alibaba-inc.com DocumentRoot "D:/workspace/php/demo_aliluna_com" ServerName demo.aliluna.com ErrorLog "logs/demo.aliluna.com-error.log" CustomLog "logs/demo.aliluna.com-access.log" common </VirtualHost>
3. 打开 httpd.conf 文件, 添加以下语句.
# Virtual hosts Include conf/extra/httpd-vhosts.conf
4. 重启 Apache 服务.
最近我在不一样的几台服务器上搭建了一些网站服务, 这篇文章也算是个人我的笔记, 望往后可自用, 也但愿对读者有用. 文中介绍了几个主流开发和部署环境上配置虚拟主机的方法, 其余 OS 大同小异.