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