歡迎您光臨本站 註冊首頁

Linux Apache Web 伺服器(續一)

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  四、配置Apache基礎篇,讓WWW伺服器跑起來 Apache伺服器軟體的配置文件主要有:「access.conf」:用於設置系統中的存取方式和環境;「httpd.conf」:用於設置伺服器啟動的基本環境;「srm.conf」:主要用於做文件資源上的設定;「mime.type」:記錄Apache伺服器所能識別的MIME格式。
在具體講解之前,我們必須告訴大家,Apache已經在安裝時就採用了一系列的預設值,已經讓WWW伺服器跑起來了。你只需要將裝上Linux+Apache的主機聯入Internet,然後將主頁存放到「/home/httpd」目錄下即可。

下面介紹一些最主要的配置選項的含義,以便大家用最小的精力、最小的配置準備好伺服器。

4.1 httpd.conf

httpd.conf是主配置文件。它告訴伺服器將如何運行。

一、最重要的配置選項ServerType standalone | inetd

這個配置選項指定如何運行WEB伺服器。Apache可以使用兩種方法來運

行伺服器:standalone(獨立的)和inetd(由inetd運行的)。

standalone參數表示WEB服務進程以一個單獨的守候進程的方式在後台偵聽是否有客戶端的請求,如果有就生成一個子進程來為其服務。

inetd參數表示WEB服務不是以一個單獨的守候進程的形式支持。而是由Inetd這個超級伺服器守候進程進行代勞,當它收到一個客戶端的WEB服務請求的時候,再啟動一個WEB服務進程為其服務。

從功能的角度看,這兩種方法幾乎是相同的。但它們之間實際有很大區別,區別在於伺服器的性能。一個由inted運行的伺服器進程在它結束對請求服務的同時立刻退出。而在standalone模式下,子WWW伺服器進程在退出之前要掛起一段時間,這就給它們提供了機會,可以重新用來服務新的請求。

在standalone模式下,不存在對每個請求啟動新進程的開銷,所以它的效率更高;而inetd模式被認為比standalone模式更具安全性。


standalone模式:

此種模式下,WWW伺服器偵聽特定埠的連接請求。當客戶機發出到特



定埠地址的連接請求時,主伺服器進程啟動子WWW服務進程來服務該請求。如下圖所示:



圖2 獨立伺服器


另外還需要告訴主伺服器進程偵聽的特定埠地址,使用命令:

Port [number] (預設值為80)


inetd模式


inetd是偵聽有小於1024的埠連接請求的Internet守護進程(一個伺服器進程)。與前面的方法不同,當客戶系統發出到WWW伺服器的連接請求時,inetd啟動一個WWW伺服器進程,由此進程服務此請求,完成服務后即退出。如下圖所示:



圖3 由inetd啟動的伺服器


如果選擇通過inetd伺服器來運行Apache,需要編輯/etc/inetd.conf文件為Apache添加一條新的記錄:

httpd stream tcp nowait httpd /etc/httpd/bin/httpd ?f /etc/httpd/conf/httpd.conf

修改了/etc/inetd.conf文件后,就需要修改/etc/services中添加一行

httpd 80/tcp httpd

做完以上修改後,需要重新啟動inetd進程。首先,使用以下命令取得inetd的進程ID:

ps auxw |grep inetd

然後執行命令:kill ?HUP

在RedHat Linux中,默認是採用inetd伺服器來運行Apache,所以只要你在安裝時選擇了httpd,以上工作在安裝時就已經代你完成了。

二、其它配置選項


Server Admin命令,用來設置WEB管理員的E-Mail地址。這個地址會出現在系統連接出錯的時候,以便訪問者能夠將情況及時地告知WEB管理員。


命令格式: Server Admin [you E-Mail address]

例:Server Admin admin@xxx.com





ErrorLog命令,用來指定錯誤記錄文件名稱和路徑。

命令格式: ErrorLog [log filename]

例:ErrorLog /var/httpd/error.log




Timeout命令,只要客戶端超過這裡設定的秒數還沒有完成一個請求的話,服務端將終止這次請求服務。如果網路速度較慢的話,建議在此設置較大的數值。以給客戶端更多機會。

命令格式: Timeout [second]

例:Timeout 120




ServerRoot命令,它指定在何處保存伺服器的配置、錯誤及日誌文件。

命令格式: ServerRoot [fully qualified path name]

例:ServerRoot /etc/httpd




ServerName命令,它配置伺服器的Internet主機名

命令格式: ServerName [host name]

例:ServerName www.xxx.com



4.2 srm.conf

srm.conf是資源配置文件,用它來告訴伺服器你想在WWW站點上提供什麼資源以及在哪裡和如何提供它們。


DocumentRoot命令,用來指定主文檔的地址。

命令格式: DocumentRoot [Path]

例:DocumentRoot /home/httpd/html




UserDir命令,用來指定個人主頁的位置。如果你有一個用戶test,那麼它主目錄是「/home/test」,當客戶端輸入「http://yourdomain/~test」,系統就會到對應的目錄「/home/test/UserDir/」中去尋找。其中「UserDir」就是在UserDir命令中設置的指定目錄。

命令格式: UserDir [Path]

例: UserDir Public_html




DirectoryIndex命令,用來聲明首頁文件名稱。一般地,我們使用「index.html」或「index.htm」作為首頁的文件名。如果這樣設置后,那麼客戶端發出WEB服務請求時,將首先調入的主頁是在指定目錄下文件「index.html」或「index.htm」。

命令格式: DirecotryIndex [filename]

例:DirecotryIndex index.html index.htm




ScriptAlias命令,為腳本程序目錄起個別名,具體可見4.7小節。

命令格式: ScriptAlias [/alias/] [fullly qualified path for script directory]

例: ScriptAlias /cgi-bin/ /home/httpd/cgi-bin



4.3 access.conf的配置

access.conf文件用來設置WWW站點上諸如文件、目錄和腳本項目的訪問許可權。該文件的第一段非註釋部分如下:


Option Indexes Includes ExecCGI FollowSymLink

AllowOverride None

Order allow , deny

allow from all


大家應該注意到,這一個部分是以開始,以結束的。這表示在其中間的部分都是針對指定目錄��「/home/httpd/html」而言的。

1.Option命令有很多的參數,各個參數的意義如下所示:

All 准許以下所有功能(MultiViews除外);

MultiViews 准許內容協商的Multiviews;

Indexes 若該目錄下無index文件,則准許顯示

該目錄下的文件以供選擇;

IncludesNOEXEC 准許SSI(Server-side Includes),但不可

使用#exec和#include功能;

Includes 准許SSI;

FollowSymLinks 准許符號鏈接到其他目錄;

ExecCGI 准許該目錄下可以使用CGI。



2.而AllowOverride命令則是用來決定是否准許在「access.conf」文件中設定的許可權是否可以被在文件「.htaccess」中設定的許可權覆蓋。它有兩個參數:

All 准許覆蓋;

None 不准許覆蓋。



3.Order命令:用來設定誰能從這個伺服器取得控制。它也有兩個參數:

allow 可以取得控制;

deny 禁止取得控制。



現在我們一起來看看關於目錄「/home/httpd/html」的設置的含義:它使得這個目錄,如果不存在index.htm文件時,列出目錄信息以供選擇,准許SSI,允許執行CGI程序,開啟了動態連接。它不允許再使用在文件「.htaccess」中設定來覆蓋這裡所設置的許可權。使所有的人都可以取得控制。

該文件的第二段非註釋部分如下:


Option ExecCGI

AllowOverride None




這個表示目錄「/home/httpd/cgi」的設置為,當前目錄下可以執行CGI程序。不允許再使用在文件「.htaccess」中設定來覆蓋這裡所設置的許可權。

需要說明的是,不同的LINUX系統中,可以在這個文件中看到的信息不完全相同,但是根據這裡給出的信息,大家可以參照命令的解釋自行理解文件中的設置,以及根據自己的需要進行相應的修改。

4.4 使新的配置生效

在上面,我們可能已經根據新的需求更改了相應的配置選項,如果我們要

使得這個新的配置立即生效。我們就必須重新啟動WEB服務進程。在LINUX中,我們可以十分方便地使用命令行來使得WEB服務進程重啟。

/etc/rc.d/init.d/httpd restart


[火星人 ] Linux Apache Web 伺服器(續一)已經有282次圍觀

http://coctec.com/docs/linux/show-post-69925.html