第十二卷 用Apache架設Web服務器(1 / 3)

第十二卷 用Apache架設Web服務器

建立Linux下的Web服務器可以選用Netscape的Enterprise Server,或者使用免費軟件Apache。 Netscape可以完全支持基於IP的虛擬主機,但對基於域名的虛擬主機卻不支持,因此隻能顯示最外麵的一層網頁。基於IP的虛擬主機需要一個獨立的IP;基於域名的虛擬主機,可以多個虛擬主機共用一個IP。利用HTTP 1.1協議,靠不同的域名來區分可以大大節省IP地址資源。Apache完全支持以上兩種虛擬主機方式,並且克服了Netscape經常出現服務塞死的現象。Apache是目前互聯網上使用廣泛的Web服務器。下麵詳細講解如何利用Apache來架設自己的Web服務器。

安裝

首先我們要介紹Apache的安裝過程。

第一,先到http://www.apache.org下載最新版本的Apache。如果是在Windows下,把該文件下載在C盤,C盤在Linux中對應於/dev/hda1。

第二,進入Linux,並以 root 的身份登錄並進行掛接文件係統。

# mkdir c

# mount -t vfat /dev/hda1 /c

因為我們將Apache的源碼放置於c盤,所以現在要先把它掛載至新建的目錄/c裏麵。

第三,把此程序拷貝到/tmp下,以便操作。

#cp /c/apache_1.3.9.tar.gz /tmp

注意:Linux下所有的文件名都是區分大小寫的。接下來,我們就要把源碼從壓縮包中解壓縮出來。相應的命令為:

#cd /tmp

#tar zxvf apache_ 1.3.9.tar.gz

解壓縮後進入存放源碼的目錄,使用編譯配置腳本進行環境的設置。

#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手冊文檔、CGI-BIN目錄)都保存在 /home/httpd目錄下。也告訴Apache將最常用的模塊作為DSO模塊編譯。DSO就是Dynamic Shared Object的縮寫。通過DSO支持的模式編譯Apache,能夠隨時從Apache裏麵增加和移除模塊,而不需要重新編譯它,具體的模塊見下文。

第四,在執行./configure 之後,配置腳本會自動生成 Makefile。這時,我們就可以開始編譯源碼了。

#make

源碼編譯完成後,就要使用make install安裝Apache至缺省的目錄下。當然也可以通過以下命令:

#rpm -ivh apache*.rpm

安裝Apache的RPM包。這種方法較為簡單,因此不再詳細介紹。

配置

安裝完Apache後,開始它的配置工作。在其主目錄下有httpd.conf、access.conf、srm.conf 及Magic等四個文件,其中httpd.conf是主要的配置文件,access.conf是訪問控製配置文件,srm.conf 則是對於Web主機的文件資源的配置文件。Magic是針對mime模塊的設置,我們一般不改動這個文件。

在Apache運行的時候,它先調用httpd.conf,接著是srm.conf,最後是access.conf。在較新的Apache發行版本中,它建議srm.conf和access.conf 兩個文件的內容為空,把設置選項完全存放在httpd.conf之中,這樣會更加有利於服務器的安全性。

下麵就以httpd.conf來開始我們神奇的Web網絡世界。

1.全局環境變量的設置

httpd.conf是以全局環境變量的設置開始的。我們將要一步步介紹其具體的參數。

ServerType standalone

ServerRoot "/etc/httpd"

第一行"ServerType"指令,說明Apache是以一個獨立的(Standalone)守護進程的身份運行於後台,還是由另外的後台守護進程(Xinetd)在接到HTTP請求的時候喚醒。對於正式的互聯網站點來說,standalone可以提供比xinetd方式更快的客戶端響應速度。因此我們選用standalone模式。第二行代碼介紹了該服務器配置文件的相對根目錄,一般是/etc/httpd,我們在安裝時已經設置好。請注意,不要在此目錄最後加"/"。

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等參數。作為Apache連接出現錯誤的記錄文件,它會把進程的PID值自動加在該文件中。請注意,該文件應保存在本地的硬盤中。PidFile記錄著每次服務器運行時的進程號。ScoreBoardFile是某些特定係統上服務程序中父子進程通訊記錄的文件。

#ResourceConfig conf/srm.conf

#AccessConfig conf/access.conf

以上兩項是指定服務器資源及控製權限的文件,在默認情況下並不使用它們。

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

這四項設定了服務器的連接屬性。第一行說明了TCP中ack的響應時間為300秒;第二項表示是否保持服務響應的連接;緊接著的兩項定義了這種連接的最大響應數目及響應時間。如果MaxKeepAliveRequests設為0,那它便是unlimited,當然這就要考慮係統的承載能力了。

MinSpareServers 5

MaxSpareServers 20