虛擬主機 (Virtual Host)

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

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

Redhat Enterprise Linux

Redhat Enterprise Linux (包括 CentOS Linux), 是使用最廣的 Linux 服務器, 大量的網站應用都部署在其上.apache

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 webmaster@dummy-host.example.com
    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 webmaster@dummy-host.example.com
    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 webmaster@dummy-host.example.com
    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 webmaster@dummy-host.example.com
    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 
複製代碼

 

複製代碼
wamp5下的虛擬主機的配置




今天配置了一下虛擬目錄,如下是個人配置方法。
 
 1  編輯httpd.conf,查找Include conf/extra/httpd-vhosts.conf,把前面註釋符號「#」刪掉。
 2  編輯httpd-vhosts.conf,我把WAMPServer安裝在D:/wamp,因此我這裏的路徑是D:\wamp\Apache2\conf\extra。  

 
把裏面的內容清空掉或者註釋,換成下面的內容:
 

NameVirtualHost *:80

這個是新增的努力目錄
<VirtualHost *:80>
ServerName www.cms.com
ServerAlias www.cms.com
DocumentRoot "F://workplace"
</VirtualHost>

原來默認的目錄
<VirtualHost *:80>
    ServerName localhost
    ServerAlias localhost
    DocumentRoot "D:/wamp/www"
</VirtualHost>

3 編輯httpd.conf,找到DocumentRoot "d:/wamp/www/"這項,這是默認根目錄路徑,可是要更改的不是這個,一直往下找,找到<Directory "d:/wamp/www">,而後在該</Directoory>後加上以下內容:
 
  <Directory "F://workplace">

 
    Options Indexes FollowSymLinks

     AllowOverride all
    Order Allow,Deny
    Allow from all
    </Directory>

    <Directory "D:/wamp/www">
    Options Indexes FollowSymLinks
     AllowOverride all
    Order Allow,Deny
    Allow from all
    </Directory>
--------------------------example-----------------------

<VirtualHost *:80>
    DocumentRoot D:/ds/www
   ServerName www.ds.com
<Directory "D:/ds/www">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>



4  修改C:/WINDOWS/system32/drivers/etc/host這個文件,用記事本打開,加上以下內容:
   127.0.0.1  www.cms.com

好了,而後重啓apache,在瀏覽器裏面輸入www.cms.com,看看訪問到的內容是否是workplace這個目錄呢。
相關文章
相關標籤/搜索