Apache 虛擬主機 VirtualHost 配置

原文出處:http://www.neoease.com/apache-virtual-host/

虛擬主機 (Virtual Host) 是在同一臺機器搭建屬於不同域名或者基於不同 IP 的多個網站服務的技術. 可以爲運行在同一物理機器上的各個網站指配不同的 IP 和端口, 也可讓多個網站擁有不同的域名.

Apache 是世界上使用最廣的 Web 服務器, 從 1.1 版開始支持虛擬主機. 本文將講解在不同服務器 (Redhat Enterprise Linux, Ubuntu Linux, Windows) 上使用 Apache 搭建虛擬主機來搭建多個網站.

Apache 虛擬主機 VirtualHost 配置

主旨

本文旨在讓讀者知道如何在同一臺機器上搭建多個網站, 並附帶一些使用技巧. 以操作爲主, 不會過多談及原理.

目標

本文是寫給擁有一定的服務器配置和管理技能, 工作中需要同時維護多個網站的網站主, 網站開發者和網絡管理員. 如果你是互聯網公司的配管工程師, 對計算機服務器原理和操作十分熟悉, 請忽視本文, 你不會在上面找到太多有價值的東西.

以下是各操作系統的配置方法.

Redhat Enterprise Linux

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 [email protected]
#    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 [email protected]
    DocumentRoot /var/www/httpdocs/demo_neoease_com
    ServerName demo.neoease.com
    ErrorLog logs/demo.neoease.com-error.log
    CustomLog logs/demo.neoease.com-access.log common
</VirtualHost>

3. 重啓 httpd 服務, 執行以下語句.

service httpd restart

Ubuntu Linux

Ubuntu 在 Linux 各發行版中, 個人用戶數量最多的. 很多人在本機和虛擬機中使用. 但 Ubuntu 和 Redhat 的 VirtualHost 設置方法不相同.

1. 打開目錄 /etc/apache2/sites-available/, 發現 default 和 default-ssl 兩個文件, 其中 default 是 http 虛擬主機服務的配置文件, default-ssl 是配置 https 服務使用的. 可以複製一份 default 文件. 並修改配置文件名, 文件名必須與域名一致 (如: demo.neoease.com)

2. 打開新建的配置文件, 修改 DocumentRoot, ServerName 和對應的配置目錄. 例子如下:

#
# DocumentRoot 是網站文件存放的根目錄
# ServerName 是網站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/httpdocs/demo_neoease_com
    ServerName demo.neoease.com
    ErrorLog ${APACHE_LOG_DIR}/demo.neoease.com-error.log
    CustomLog ${APACHE_LOG_DIR}/demo.neoease.com-access.log combined
</VirtualHost>

3. 通過 a2ensite 激活虛擬主機配置

sudo a2ensite demo.neoease.com

4. 打開目錄 /etc/apache2/sites-enabled/, 你會發現所有激活的虛擬主機, 可以通過 a2dissite 進行註銷

sudo a2dissite demo.neoease.com

5. 重啓 Apache 服務, 激活虛擬主機

sudo /etc/init.d/apache2 restart

Windows

Windows 是市場佔有率最高的 PC 操作系統, 也是很多人的開發環境. 其 VirtualHost 配置方法與 Linux 上有些差異, 以下方式適合原生 Apache, XAMPP 和 WAMP 套件.

1. 打開目錄 {Apache2 安裝目錄}\conf\extra\, 找到 httpd-vhosts.conf 文件.

2. 仿照例子, 添加一段代碼來指定某一域名的網站.

#
# DocumentRoot 是網站文件存放的根目錄
# ServerName 是網站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "D:/workspace/php/demo_neoease_com"
    ServerName demo.neoease.com
    ErrorLog "logs/demo.neoease.com-error.log"
    CustomLog "logs/demo.neoease.com-access.log" common
</VirtualHost>

3. 打開 httpd.conf 文件, 添加如下語句.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

4. 重啓 Apache 服務.

Mac OS

近年蘋果的雄起, 讓 Mac 日催普及, 也成爲很多開發人員的選擇. 因爲與 Linux 同源, 配置方法也相似.

1. 打開文件 /private/etc/apache2/extra/httpd-vhosts.conf.

2. 仿照例子, 添加一段代碼來指定某一域名的網站.

#
# DocumentRoot 是網站文件存放的根目錄
# ServerName 是網站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/docs/httpdocs/demo_neoease_com"
    ServerName demo.neoease.com
    ErrorLog "/private/var/log/apache2/demo.neoease.com-error_log"
    CustomLog "/private/var/log/apache2/demo.neoease.com-access_log" common
</VirtualHost>

3. 打開文件 /private/etc/apache2/httpd.conf, 搜索 Virtual hosts, 找到代碼如下:

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

去掉前面的註釋符號 #, 保存文件.

4. 重啓 apache 服務, 執行以下語句.

sudo apachectl restart

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章