1. 程式人生 > >Apache 虛擬功能- 同一臺電腦執行兩個以上的網站

Apache 虛擬功能- 同一臺電腦執行兩個以上的網站

Apache的虛擬主機是一種允許在同一臺機器上,執行超過一個網站的解決方案。虛擬主機有兩種,一種叫基於IP的(IP-based),另一種叫基於名字的(name-based)。虛擬主機的存在,對使用者來說是透明的。

基於IP的虛擬主機:

對於基於IP的虛擬主機來說,必須為每個虛擬主機配備一個單獨的IP。也就是說你的伺服器必須有多個IP地址。對於這種方式,我們在本地就可以做一個實驗來進行配置。

配置基於IP的虛擬主機,有兩種方法:一是啟動多個apache伺服程式,每個例項使用單獨的配置檔案,一般來說,在同一臺機器上,架設兩個網站,這兩個網站互相之間不希望對方訪問自己的檔案,就使用這種方式,每個apache例項都是用單獨的使用者名稱,組來啟動,並且放到不同的目錄下,這種方式只要在apche的配置檔案中,為Listen命令配置不同的ip即可;

第二種方法是隻啟動一個單一的apache程序,使用VirtualHost指令來為不同的站點,配置不同的值,這種配置方式,我們可以在本地做個試驗的,由於127.0.0.*的所有ip都是指向本機的,所以,我們可以隨便拿兩個出來做實驗,按照如下方式配置apache,之後,在hosts檔案中,將域名繫結到配置的ip上,就可以實現在本地執行多個wp系統的一個配置:

<VirtualHost 127.0.0.1:80> 
    ServerAdmin [email protected].com
    DocumentRoot "E:/domain.com/wordpress-latest"
ServerName wplatest.com ServerAlias www.domain.com ErrorLog "logs/wplatest.com-error.log" CustomLog "logs/wplatest.com-access.log" combined </VirtualHost> <VirtualHost 127.0.0.2:80> ServerAdmin [email protected].com DocumentRoot "E:/domain.com/wordpress-2.9.2"
ServerName wpstable.com ServerAlias www.domain.com ErrorLog "logs/domain.com-error.log " CustomLog "logs/domain.com-access.log" combined </VirtualHost>

基於名字的虛擬主機:

基於名字的虛擬主機比起基於IP的來說,配置要更加簡單,它只要依靠客戶端傳送的HTTP頭資訊中的HOST欄位來判斷,伺服器到底要服務哪個虛擬主機。一般情況下,還是比價推薦使用這種方式。因為IP資源日漸稀缺,對於一般使用者來說,為一臺伺服器購買多個IP也是成本較高的。

使用這種方式配置時,首先是用NameVirtualHost指令,配置次apache例項監聽的IP地址和埠號,然後使用VirtualHost指令來配置不同的虛擬主機,上述的例子,用這種方式配置的話,配置方法如下(注意,在這種方式中,ServerName是必填欄位):

NameVirtualHost 127.0.0.1:80

<VirtualHost *:80> 
    ServerAdmin [email protected].com
    DocumentRoot "E:/aaa.com/wordpress-latest" 
    ServerName wplatest.com 
    ServerAlias www.aaa.com 
    ErrorLog "logs/wplatest.com-error.log" 
    CustomLog "logs /domain.com-access.log" combined 
</VirtualHost>

<VirtualHost *:80> 
    ServerAdmin [email protected].com
    DocumentRoot "E:/domain.com/wordpress-2.9.2" 
    ServerName wpstable.com 
    ServerAlias www.domain.com 
    ErrorLog "logs/domain.com-error.log" 
    CustomLog "logs/domain.com-access.log" combined 
</VirtualHost>

此種配置方法,也可以在本地簡單地進行實驗。