云主機(jī)環(huán)境搭建教程之搭建全能主機(jī)
很多站長(zhǎng)在購(gòu)買(mǎi)虛擬主機(jī)的時(shí)候,會(huì)看虛擬主機(jī)的一些參數(shù),其中最重要的就是支持的程序語(yǔ)言。現(xiàn)在很多IDC商家都在宣稱(chēng)全能主機(jī)。
最好笑的一個(gè)事情就是,筆者剛建站的時(shí)候,購(gòu)買(mǎi)了國(guó)內(nèi)一家小主機(jī)商(名叫主機(jī)屋)的虛擬主機(jī),他們宣傳就是全能主機(jī),什么語(yǔ)言都支持。這樣的幌子去騙一些菜鳥(niǎo)還可以,對(duì)于一個(gè)懂技術(shù)的,就只能對(duì)他們的伎倆投以鄙視的眼光。后來(lái)詢(xún)問(wèn)之后,才知道他們所謂的全能主機(jī),也就僅僅只支持PHP和ASP同時(shí)運(yùn)行(使用IIS運(yùn)行PHP),連ASP.net都不支持,對(duì)于這事,筆者還和他們理論了半天,現(xiàn)在估計(jì)再也不敢宣稱(chēng)全能主機(jī)了,這樣的商家,希望所有站長(zhǎng)都能遠(yuǎn)離,太沒(méi)有道德了。
首先說(shuō)說(shuō),什么是全能主機(jī)。
所謂的全能主機(jī),就是一臺(tái)服務(wù)器上面同時(shí)支持多個(gè)不同的應(yīng)用服務(wù)器運(yùn)行,并且能通過(guò)外部獨(dú)立域名訪(fǎng)問(wèn)的主機(jī)。這里的多個(gè),要至少大于等于三個(gè)。
因?yàn)槟壳皝?lái)講,Apache,IIS,Tomcat是目前被廣泛使用的三種Web服務(wù)器軟件,其中Apache,tomcat是開(kāi)源軟件,不僅用于Unix系統(tǒng),也有基于Win32平臺(tái)的版本。
IIS是Windows操作系統(tǒng)自帶的組件,也提供了強(qiáng)大的Internet和Intranet服務(wù)功能。這三種服務(wù)器軟件各有特色,IIS對(duì)ASP+Access的支持比較好,而Apache是PHP+MySQL平臺(tái)不二的選擇,Tomcat是運(yùn)行java語(yǔ)言程序的服務(wù)器。
大家都知道,http只有一個(gè)開(kāi)放端口,就是80端口。外部通過(guò)獨(dú)立域名訪(fǎng)問(wèn)網(wǎng)站的時(shí)候,如果不加端口,會(huì)默認(rèn)訪(fǎng)問(wèn)服務(wù)器中80端口下面的網(wǎng)站。很現(xiàn)實(shí),這幾個(gè)應(yīng)用服務(wù)器不可能只用一個(gè)端口。如果要訪(fǎng)問(wèn),則必須通過(guò)域名加端口號(hào)才能訪(fǎng)問(wèn),這樣顯然不利于推廣。因此,我們就需要想辦法讓用戶(hù)輸入簡(jiǎn)單域名,而我們?cè)诤笈_(tái)截獲域名,然后動(dòng)態(tài)的解析到不同的端口網(wǎng)站上。
按照這樣的思路,筆者想了很多辦法,傳統(tǒng)的就是重新配置IIS,使其支持PHP+MySQL,或者重新配置Apache使其能支持ASP+Access。但考慮到這兩種方法雖然從技術(shù)上都能夠?qū)崿F(xiàn),但配置過(guò)程較復(fù)雜,不易于推廣,不利于初學(xué)者使用。況且如果你還搭建了java程序,那就更復(fù)雜了。
筆者也沒(méi)有從事過(guò)IDC行業(yè)的工作,沒(méi)有這方面的經(jīng)驗(yàn)。同時(shí)也在思考現(xiàn)在那些全能功能是如何實(shí)現(xiàn)的。根據(jù)筆者的經(jīng)驗(yàn),他們是有一個(gè)80端口的服務(wù)器做代理分發(fā),將不同的域名分發(fā)到不用的應(yīng)用服務(wù)器的網(wǎng)站上。
通過(guò)這樣的思路,筆者想到了使用Apache的虛擬主機(jī)功能和反向代理模塊來(lái)實(shí)現(xiàn)。
什么是Apache虛擬主機(jī)。在apache的官方技術(shù)網(wǎng)站上是這樣定義的。
虛擬主機(jī)指的是在單一機(jī)器上運(yùn)行多個(gè)網(wǎng)站 (例如 www.company1.com 和 www.company2.com) 。 虛擬主機(jī)可以“基于 IP”,即每個(gè) IP 一個(gè)站點(diǎn); 或者“基于名稱(chēng)”, 即每個(gè) IP 多個(gè)站點(diǎn)。這些站點(diǎn)運(yùn)行在同一物理服務(wù)器上的事實(shí)不會(huì)明顯的透漏給最終用戶(hù)。
Apache 是第一個(gè)支持基于 IP 的虛擬主機(jī)的服務(wù)器。 Apache 版本 1.1 和更新的版本同時(shí)支持基于 IP 和基于名稱(chēng)的虛擬主機(jī)。 基于名稱(chēng)的虛擬主機(jī)有時(shí)候稱(chēng)為基于主機(jī)或非 IP的虛擬主機(jī)。
詳細(xì)地址:http://httpd.apache.org/docs/2.2/vhosts/ 注:本文是基于名稱(chēng)的虛擬主機(jī)配置。
什么是反向代理。
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶(hù)端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)web服務(wù)器。
那么我們就將Apache服務(wù)器做為一個(gè)代理web服務(wù)器,用它來(lái)處理從外部訪(fǎng)問(wèn)過(guò)來(lái)的任何請(qǐng)求并且返回給外部。
有興趣的朋友可以了解下什么是正向代理。
名詞術(shù)語(yǔ)大概介紹完了,那么本文主要通過(guò)一個(gè)例子來(lái)為大家簡(jiǎn)述配置的具體方法。
前言:仍然以筆者的www.bxw001.com這個(gè)域名為例。這個(gè)網(wǎng)站是一個(gè)ASP+Access網(wǎng)站,建立在IIS6.0下,端口設(shè)置為81。如果不使用反向代理,則用戶(hù)訪(fǎng)問(wèn)這個(gè)網(wǎng)站時(shí),必須使用www.bxw001.com:81 才能正常訪(fǎng)問(wèn),很麻煩。
通過(guò)反向代理設(shè)置后,用戶(hù)仍然使用www.bxw001.com域名網(wǎng)站,但首先會(huì)進(jìn)入到Apache服務(wù)器,然后再調(diào)轉(zhuǎn)到IIS下的正式網(wǎng)站去。
設(shè)置步驟如下:
1、加載Apache的代理模塊
打開(kāi)httpd.conf文件,放開(kāi)以下幾行代碼的注釋?zhuān)?將前面的#去掉即可),此時(shí)Apache就是一個(gè)web代理服務(wù)器了。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
2、建立虛擬主機(jī),進(jìn)行端口重定向
為需要代理的網(wǎng)站建立一個(gè)虛擬主機(jī),在此筆者強(qiáng)烈建議,都通過(guò)虛擬主機(jī)來(lái)單獨(dú)配置。有些朋友可能直接在httpd.conf文件里修改,這樣雖然也能實(shí)現(xiàn),但是所有的訪(fǎng)問(wèn),包括不是代理域名的訪(fǎng)問(wèn)都會(huì)進(jìn)入被代理的網(wǎng)站去。
因?yàn)锳pache虛擬主機(jī)的加載順序是按照順序來(lái)加載的,如果訪(fǎng)問(wèn)的url配置了虛擬主機(jī),則進(jìn)行代理訪(fǎng)問(wèn),如果沒(méi)有,默認(rèn)是以第一個(gè)的。
因此,需要引入虛擬主機(jī)單獨(dú)的配置文件,在這里面增加虛擬主機(jī)配置。
在httpd.conf文件中找到這行代碼,Include conf/extra/httpd-vhosts.conf,去掉#注釋。
以下關(guān)于虛擬主機(jī)的配置都在httpd-vhosts.conf下進(jìn)行。
默認(rèn)Apache提供了兩個(gè)樣例,不用管,直接注釋掉,或者在原來(lái)上面修改也可以。
我們是要將站點(diǎn)www.bxw001.com域名的所有訪(fǎng)問(wèn)轉(zhuǎn)向IIS下面的81端口,先增加一個(gè)虛擬主機(jī)。代碼如下:
<VirtualHost *:80>
ServerAdmin webmaster@a.com
DocumentRoot "d:/wwwroot/www.bxw.com"
ServerName bxw001.com
ServerAlias www.bxw001.com
ErrorLog "logs/bxw001.com.log"
CustomLog "logs/bxw001.com.log" common
<Directory "d:/wwwroot/www.bxw.com">
Require all granted
</Directory>
ProxyPass / http://localhost:81/
ProxyPassReverse / http://localhost:81/
</VirtualHost>
解釋?zhuān)?/p>
ServerAdmin:這個(gè)就是郵箱,可以默認(rèn)
DocumentRoot:這個(gè)是你被代理的網(wǎng)站的根目錄地址。我們這就是IIS6.0下面的ASP網(wǎng)站目錄。注意目錄斜杠的方向。
ServerName :被代理的域名,這里就是你IIS下ASP網(wǎng)站的獨(dú)立域名。
ServerAlias:同上,別名,一般可以寫(xiě)成一級(jí)或者二級(jí)域名。
ErrorLog :日志文件地址和名稱(chēng)。一般以域名作為文件名,方便區(qū)分,默認(rèn)存放在apache的logs目錄下。
<Directory > 設(shè)置虛擬主機(jī)的目錄的訪(fǎng)問(wèn)權(quán)限。筆者建議權(quán)限的設(shè)定都在虛擬主機(jī)下單獨(dú)設(shè)置,而不是在httpd.conf中統(tǒng)一設(shè)置成所有都可以訪(fǎng)問(wèn),這樣不安全。
ProxyPass :這個(gè)是關(guān)鍵,表示IIS下面ASP網(wǎng)站的真實(shí)訪(fǎng)問(wèn)地址,這里寫(xiě)成localhost,也可以寫(xiě)成域名+端口,這要看你在IIS設(shè)置的主機(jī)頭地址了。如果主機(jī)頭默認(rèn),那么這里就是localhost。
ProxyPassReverse :反向代理地址,返回給用戶(hù)的信息。
同時(shí)不要忘記在所有虛擬主機(jī)的一開(kāi)始位置,增加默認(rèn)虛擬主機(jī)配置。
<VirtualHost *:80>
ServerAdmin prograsliu@Gmail.com
DocumentRoot "D:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "d:/wamp/www">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
這個(gè)默認(rèn),你可以設(shè)置成Apache的www目錄。
以上兩步操作完成后,保存后重啟Apache服務(wù)。你可以試著訪(fǎng)問(wèn)ASP網(wǎng)站的域名www.bxw001.com,不要加端口號(hào),看看是否可以正常訪(fǎng)問(wèn)了。呵呵。
如果要增加多個(gè)IIS網(wǎng)站或者JAVA網(wǎng)站,只要按照上面的步驟2中的代碼增加虛擬主機(jī)即可,同時(shí)將代理域名寫(xiě)成你需要被代理的網(wǎng)站的URL即可。
通過(guò)這樣操作,就可以完美實(shí)現(xiàn)一個(gè)全能主機(jī)了,你可以隨便在服務(wù)器上搭建多個(gè)不同環(huán)境的網(wǎng)站了。
來(lái)源:sixdosoft投稿。
來(lái)源:月光博客