用Apache架設(shè)Web服務(wù)器
建立Linux下的Web服務(wù)器可以選用Netscape的Enterprise Server,或者使用免費(fèi)軟件Apache。 Netscape可以完全支持基于IP的虛擬主機(jī),但對(duì)基于域名的虛擬主機(jī)卻不支持,因此只能顯示最外面的一層網(wǎng)頁(yè)?;贗P的虛擬主機(jī)需要一個(gè)獨(dú)立的IP;基于域名的虛擬主機(jī),可以多個(gè)虛擬主機(jī)共用一個(gè)IP。利用HTTP 1.1協(xié)議,靠不同的域名來(lái)區(qū)分可以大大節(jié)省IP地址資源。Apache完全支持以上兩種虛擬主機(jī)方式,并且克服了Netscape經(jīng)常出現(xiàn)服務(wù)塞死的現(xiàn)象。Apache是目前互聯(lián)網(wǎng)上使用廣泛的Web服務(wù)器。下面詳細(xì)講解如何利用Apache來(lái)架設(shè)自己的Web服務(wù)器。
安裝
首先我們要介紹Apache的安裝過(guò)程。
第一,先到http://www.apache.org下載最新版本的Apache。如果是在Windows下,把該文件下載在C盤(pán),C盤(pán)在Linux中對(duì)應(yīng)于/dev/hda1。
第二,進(jìn)入Linux,并以 root 的身份登錄并進(jìn)行掛接文件系統(tǒng)。
# mkdir c
# mount -t vfat /dev/hda1 /c
因?yàn)槲覀儗pache的源碼放置于c盤(pán),所以現(xiàn)在要先把它掛載至新建的目錄/c里面。
第三,把此程序拷貝到/tmp下,以便操作。
#cp /c/apache_1.3.9.tar.gz /tmp
注意:Linux下所有的文件名都是區(qū)分大小寫(xiě)的。接下來(lái),我們就要把源碼從壓縮包中解壓縮出來(lái)。相應(yīng)的命令為:
#cd /tmp
#tar zxvf apache_ 1.3.9.tar.gz
解壓縮后進(jìn)入存放源碼的目錄,使用編譯配置腳本進(jìn)行環(huán)境的設(shè)置。
#cd /tmp/apache_1.3.9
#./configure--sysconfdir=/etc/httpd
--datadir=/home/httpd
--logfiledir=/var/log/httpd
--enable-module=most
--enable-shared=max
--disable-rule= WANTHSREGEX
這里告訴Apache把配置文件保存在/etc/httpd目錄中,其它文件(例如HTML手冊(cè)文檔、CGI-BIN目錄)都保存在 /home/httpd目錄下。也告訴Apache將最常用的模塊作為DSO模塊編譯。DSO就是Dynamic Shared Object的縮寫(xiě)。通過(guò)DSO支持的模式編譯Apache,能夠隨時(shí)從Apache里面增加和移除模塊,而不需要重新編譯它,具體的模塊見(jiàn)下文?! ?/p>
第四,在執(zhí)行./configure 之后,配置腳本會(huì)自動(dòng)生成 Makefile。這時(shí),我們就可以開(kāi)始編譯源碼了。
#make
源碼編譯完成后,就要使用make install安裝Apache至缺省的目錄下。當(dāng)然也可以通過(guò)以下命令:
#rpm -ivh apache*.rpm
安裝Apache的RPM包。這種方法較為簡(jiǎn)單,因此不再詳細(xì)介紹。
配置
安裝完Apache后,開(kāi)始它的配置工作。在其主目錄下有httpd.conf、access.conf、srm.conf 及Magic等四個(gè)文件,其中httpd.conf是主要的配置文件,access.conf是訪問(wèn)控制配置文件,srm.conf 則是對(duì)于Web主機(jī)的文件資源的配置文件。Magic是針對(duì)mime模塊的設(shè)置,我們一般不改動(dòng)這個(gè)文件。
在Apache運(yùn)行的時(shí)候,它先調(diào)用httpd.conf,接著是srm.conf,最后是access.conf。在較新的Apache發(fā)行版本中,它建議srm.conf和access.conf 兩個(gè)文件的內(nèi)容為空,把設(shè)置選項(xiàng)完全存放在httpd.conf之中,這樣會(huì)更加有利于服務(wù)器的安全性。
下面就以httpd.conf來(lái)開(kāi)始我們神奇的Web網(wǎng)絡(luò)世界。
1.全局環(huán)境變量的設(shè)置
httpd.conf是以全局環(huán)境變量的設(shè)置開(kāi)始的。我們將要一步步介紹其具體的參數(shù)。
ServerType standalone
ServerRoot "/etc/httpd"
第一行"ServerType"指令,說(shuō)明Apache是以一個(gè)獨(dú)立的(Standalone)守護(hù)進(jìn)程的身份運(yùn)行于后臺(tái),還是由另外的后臺(tái)守護(hù)進(jìn)程(Xinetd)在接到HTTP請(qǐng)求的時(shí)候喚醒。對(duì)于正式的互聯(lián)網(wǎng)站點(diǎn)來(lái)說(shuō),standalone可以提供比xinetd方式更快的客戶端響應(yīng)速度。因此我們選用standalone模式。第二行代碼介紹了該服務(wù)器配置文件的相對(duì)根目錄,一般是/etc/httpd,我們?cè)诎惭b時(shí)已經(jīng)設(shè)置好。請(qǐng)注意,不要在此目錄最后加"/"。
LockFile /var/lock/httpd.lock
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
LockFile在安裝Apache時(shí)指定選用了USE_FCNTL _SERIALIZED_ACCEPT,USE_FLOCK_SERIALIZED_ACCEPT等參數(shù)。作為Apache連接出現(xiàn)錯(cuò)誤的記錄文件,它會(huì)把進(jìn)程的PID值自動(dòng)加在該文件中。請(qǐng)注意,該文件應(yīng)保存在本地的硬盤(pán)中。PidFile記錄著每次服務(wù)器運(yùn)行時(shí)的進(jìn)程號(hào)。ScoreBoardFile是某些特定系統(tǒng)上服務(wù)程序中父子進(jìn)程通訊記錄的文件。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
以上兩項(xiàng)是指定服務(wù)器資源及控制權(quán)限的文件,在默認(rèn)情況下并不使用它們。
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
這四項(xiàng)設(shè)定了服務(wù)器的連接屬性。第一行說(shuō)明了TCP中ack的響應(yīng)時(shí)間為300秒;第二項(xiàng)表示是否保持服務(wù)響應(yīng)的連接;緊接著的兩項(xiàng)定義了這種連接的最大響應(yīng)數(shù)目及響應(yīng)時(shí)間。如果MaxKeepAliveRequests設(shè)為0,那它便是unlimited,當(dāng)然這就要考慮系統(tǒng)的承載能力了。
MinSpareServers 5
MaxSpareServers 20
StartServers 8
這三項(xiàng)定義了服務(wù)程序的最小、最大空的子進(jìn)程數(shù)目及服務(wù)程序開(kāi)始時(shí)的進(jìn)程數(shù)。5、20、8分別是它們的默認(rèn)數(shù)值。
MaxClients 150
MaxRequestsPerChild 100
以上兩行定義了同一時(shí)刻最多的客戶連接數(shù)目和每個(gè)連接的子進(jìn)程數(shù)。
Listen 3000
Listen 12.34.56.78:80
BindAddress *
這里定義了服務(wù)程序監(jiān)聽(tīng)來(lái)自以上IP、端口號(hào)的Request。由于BindAddress只支持*(代表所有的IP),所以產(chǎn)生了Listen這個(gè)參數(shù)以便更靈活地處理客戶機(jī)的響應(yīng)。
ExtendedStatus On/Off
這條指令說(shuō)明了是否跟蹤服務(wù)程序所產(chǎn)生的擴(kuò)展?fàn)顟B(tài)。
以下是對(duì)于DSO的支持,分別利用了LoadModule、AddModule參數(shù)。我們可以閱讀表1,加載自己所需要的模塊。
2.主服務(wù)器設(shè)置
下面設(shè)置主服務(wù)器(非虛擬服務(wù)主機(jī))。
Port 80
這個(gè)參數(shù)給出了服務(wù)程序開(kāi)啟監(jiān)聽(tīng)的端口號(hào)為80。
User nobody
Group nobody
ServerAdmin root@localhost
ServerName localhost
上面的第一、二行代表了打開(kāi)服務(wù)進(jìn)程的用戶名和用戶組名。第三、四行則是管理員的郵件地址和此服務(wù)器的主機(jī)名。
DocumentRoot "/home/httpd/html"
DirectoryIndex index.html index.htm index.shtml index.cgi
UserDir public_html
面前兩行定義了網(wǎng)頁(yè)的主目錄和首頁(yè)名稱(chēng)。UserDir給出了用戶的絕對(duì)路徑,也就是說(shuō)明個(gè)人主頁(yè)存放路徑。
AccessFileName .htaccess
此指令指定了每個(gè)目錄下的文件權(quán)限是由.htaccess決定。當(dāng)Apache試圖讀取某一目錄下的文件時(shí),它將先查閱".htaccess"文件中所列的訪問(wèn)控制指令,并執(zhí)行相應(yīng)的操作。
Mime 的文件定義類(lèi)型是由下面的兩句所決定:
MIMEMagicFile share/magic
AddLanguage en .en
此參數(shù)可以增加對(duì)多種語(yǔ)言的支持。
LogLevel warn
CustomLog /var/log/httpd/access_log common
上面這些代碼代表了客戶機(jī)訪問(wèn)服務(wù)器的一些日志文件。
完成全局設(shè)置后,我們還要針對(duì)每個(gè)目錄的權(quán)限進(jìn)行特定的配置。
3.目錄權(quán)限的配置
我們只以一個(gè)目錄為例,其它的路徑可以類(lèi)推。
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
?。糒imit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
?。?Limit>
?。糒imit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
?。?Limit>
?。?Directory>
這一段定義了/home/*/public_html目錄下可以或禁止進(jìn)行的文件操作,以及客戶機(jī)的受限范圍。
4.虛擬主機(jī)配置
虛擬主機(jī)配置是Apache最精彩的地方之一,很多的ASP也是利用Apache這個(gè)特性來(lái)提供優(yōu)質(zhì)服務(wù)的。
SSLDisable
ServerAdmin webmaster@virt.com
DocumentRoot /var/httpd/virt
ScriptAlias /cgi-bin/ /var/httpd/virt/cgi-bin/
ServerName www.virt.com
ErrorLog logs/virt-error.log
TransferLog logs/virt-access.log
?。?VirtualHost>
我們可以看到它的語(yǔ)法和真正主機(jī)設(shè)置相差甚小,因此不再介紹。
關(guān)鍵詞:Apache,Web服務(wù)器
閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!
- 6
- 263
- 5
- 5
- 9
- 4