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