APACHE(2)
發(fā)表時(shí)間:2023-08-20 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]第二章 啟動(dòng)阿帕奇 2.1 啟動(dòng)阿帕奇 httpd 這支程序可以藉由網(wǎng)際網(wǎng)路服務(wù)程序 inetd 在每一次有連線要 進(jìn)入 HTTP 服務(wù)的時(shí)候啟動(dòng),或者另一種方式,它也可以作為服務(wù)程序 (daemo...
第二章
啟動(dòng)阿帕奇
2.1 啟動(dòng)阿帕奇
httpd 這支程序可以藉由網(wǎng)際網(wǎng)路服務(wù)程序 inetd 在每一次有連線要
進(jìn)入 HTTP 服務(wù)的時(shí)候啟動(dòng),或者另一種方式,它也可以作為服務(wù)程序
(daemon)持續(xù)地執(zhí)行,處理請(qǐng)求。無論選擇哪一種方式,都必須設(shè)定這
個(gè) ServerType 指令告訴服務(wù)器它要如何執(zhí)行。
2.2 命令列選項(xiàng)
下列選項(xiàng)可以用在 httpd 的命令列上:
-d serverroot
把 ServerRoot 這個(gè)參數(shù)的起始值設(shè)定為 serverroot 。這可以
藉由在配置文件里面的 ServerRoot 命令來加以改變。此預(yù)設(shè)為
/usr/local/etc/httpd 。
-f config
啟動(dòng)時(shí)執(zhí)行在 config 文件里面的指令。如果 config 沒有以 /
作為開始的話,那麼它會(huì)被當(dāng)作相對(duì)於 ServerRoot 的路徑。此
預(yù)設(shè)值是 conf/httpd.conf 。
-X
以單一程序(single-process)模式執(zhí)行,只用在內(nèi)部除錯(cuò);服務(wù)
程序不會(huì)脫離終端作業(yè)或是產(chǎn)生任何子程序。不要使用這個(gè)模式
來提供正常的網(wǎng)頁服務(wù)。
-v
列印 httpd 的版本,然後結(jié)束。
-?
列印 httpd 選項(xiàng)的一份列表,然後結(jié)束。
2.3 配置檔
此服務(wù)器將會(huì)讀取三個(gè)配置指令文件。任何指令都可以出現(xiàn)在這些文件
任何一個(gè)里面。這些文件的名稱是相對(duì)於服務(wù)器的根目錄(server root) ;
這是根是藉由 ServerRoot 指令,或是 -d 這個(gè)命令列旗標(biāo)所指定的。
依慣例這些文件是:
conf/httpd.conf
包含控制服務(wù)程序運(yùn)作的指令。文件名稱可以配合 -f 命令列旗
旗標(biāo)加以改變。
conf/srm.conf
包含控制服務(wù)器提供給客戶端之文件規(guī)格的指令。文件名稱可以
配合 ResourceConfig 指令加以改變。
conf/access.conf
包含控制文件之存取的指令。文件名稱可以配合 AccessConfig
指令加以改變。
無論如何,這些慣例并不需要完全遵奉。
此服務(wù)器也會(huì)讀取一個(gè)包含 MIME 文件型態(tài)的文件;這個(gè)文件名稱藉由
TypesConfig 指令設(shè)定,而且有個(gè) conf/mini.types 作為預(yù)設(shè)。
2.4 記錄檔
2.4.1 pid 檔
服務(wù)程序啟動(dòng)時(shí),它把父程序 httpd 的程序碼(process id)存往這個(gè)
log/httpd.pid 文件。這個(gè)文件名稱可以配合 PidFile 指令加以改變
。這個(gè)程序碼由管理者用來重新啟動(dòng)或終止服務(wù)程序;一個(gè) HUP 信號(hào)
會(huì)使服務(wù)程序重新讀取其配置檔而一個(gè) TERM 信號(hào)會(huì)使它終止。
如果程序不正常地死掉(或被殺掉),那麼必須殺掉 httpd 子程序。
2.4.2 錯(cuò)誤記錄
服務(wù)器會(huì)將錯(cuò)誤訊息記錄到一個(gè)記錄檔去,預(yù)設(shè)為 log/error_log 。
文件名稱可以藉由 ErrorLog 指令設(shè)定;可以為不同的虛擬主機(jī)設(shè)定不
同的錯(cuò)誤記錄。
2.4.3 傳輸記錄
服務(wù)器一般會(huì)將每個(gè)請(qǐng)求記錄到一個(gè)傳輸檔,預(yù)設(shè)為 logs/access_log
。文件名稱可以藉由 TransferLog 指令設(shè)定;可以為不同的虛擬主機(jī)
設(shè)定不同的傳輸記錄。
第三章
阿帕奇核心部份(core)的特色
這些配置參數(shù)控制核心部份的阿帕奇特色,而且是固定可以使用的。
3.1 AccessConfig 指令
語法: AccessConfig 文件名稱
預(yù)設(shè): AccessConfig conf/access.conf
用於: server config, virtual host
狀態(tài): 核心
此服務(wù)器讀取 ResourceConfig 文件之後將會(huì)繼續(xù)讀取這個(gè)文件以取得
更多指令。文件名稱系相對(duì)於 ServerRoot 路徑。此特色可以使用如下
的方式關(guān)閉:
AccessConfig /dev/null
原本這個(gè)文件只包含 <Directory> 節(jié)區(qū);事實(shí)上它現(xiàn)在可以包含任何
可以用於服務(wù)器配置的指令。
3.2 AccessFileName 指令
語法: AccessFileName 文件名稱
預(yù)設(shè): AccessFileName .htaccess
用於: server config, virtual host
狀態(tài): 核心
回傳文件給客戶端的時(shí)候,如果目錄的存取控制檔有啟動(dòng),服務(wù)器會(huì)在
到達(dá)這份文件的路徑中的每個(gè)目錄里以此名稱搜尋存取控制檔。例如:
AccessFileName .acl
在回傳 /usr/local/web/index.html 這份文件前,此服務(wù)器將會(huì)讀取
/.acl, /usr/.acl, /usr/local/.acl 以及 /usr/local/web/.acl 以
取得指令,除非以如下的方式關(guān)閉它們:
<Directory />
AllowOverride None
</Directory>
3.3 AllowOverride 指令
語法: AllowOverride override override ...
預(yù)設(shè): AllowOverride All
用於: directory
狀態(tài): 核心
服務(wù)器找到 AccessFileName 指定的文件時(shí)會(huì)需要知道該文件所宣告的
哪些指令可以改變稍早的存取資訊。
Override 可以設(shè)為 None 在此情況下服務(wù)器將不會(huì)讀取該檔,而設(shè)為
All 的話服務(wù)器將會(huì)允許所有的指令,或是下列其中之一:
AuthConfig
允許驗(yàn)認(rèn)指令的使用(AuthDBMGroupFile, AuthDBMUserFile,
AuthGroupFile, AuthName, AuthType, AuthUserFile and
require)
FileInfo
允許控制文件型態(tài)之指令的使用(AddEncoding, AddLanguage,
AddType, DefaultType and LanguagePriority)
Indexes
允許控制目錄索引之指令的使用(AddDescription, AddIcon,
AddIconByEncoding, AddIconByType, DefaultIcon,
DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore,
IndexOptions and ReadmeName)
Limit
允許控制存取主機(jī)之指令的使用(allow, deny and order)
Options
允許控制特定目錄特色之指令的使用(Options and XbitHack)
3.4 AuthName 指令
語法: AuthName 驗(yàn)認(rèn)領(lǐng)域
用於: directory, .htaccess
需求: AuthConfig
狀態(tài): 核心
這個(gè)指令為某個(gè)目錄設(shè)定驗(yàn)認(rèn)區(qū)域的名稱。這個(gè)區(qū)域會(huì)送給客戶端所以
使用者知道要傳送的使用者名稱以及密碼。它必須藉由 AuthType 以及
require 指令來完成,而且要有像 AuthUserFile 以及 AuthGroupFile
這些指令配合運(yùn)作。
3.5 AuthType 指令
語法: AuthType 型態(tài)
用於: directory, .htaccess
需求: AuthConfig
狀態(tài): 核心
這個(gè)指令為某個(gè)目錄選擇使用這驗(yàn)認(rèn)型態(tài)。目前只有 Basic 實(shí)作出來
。它必須藉由 AuthName 以及 require 指令來完成,而且還要有像是
AuthUserFile 以及 AuthGroupFile 這些指令配合運(yùn)作。
3.6 BindAddress 指令
語法: BindAddress 服務(wù)器位址
預(yù)設(shè): BindAddress *
用於: server config
狀態(tài): 核心
一臺(tái) Unix 的 http 服務(wù)器可以監(jiān)聽到該服務(wù)機(jī)器每個(gè) IP 位址的連線
或者只注意該服務(wù)機(jī)器的一個(gè)位址。服務(wù)器位址可以是:
。*
。一個(gè) IP 位址
。一個(gè)完整的網(wǎng)際網(wǎng)路領(lǐng)域名稱
如果此值是 * 的話,那麼該服務(wù)器將會(huì)監(jiān)聽每一個(gè) IP 位址的連線,
否則它將只監(jiān)聽指定的 IP 位址。
這個(gè)選項(xiàng)可以用來作為另一種支援虛擬主機(jī)的方式取代 <VirtualHost>
節(jié)段。
3.7 DefaultType 指令
語法: DefaultType mime-型態(tài)
預(yù)設(shè): DefaultType text/html
用於: server config, virtual host, directory, .htacess
需求: FileInfo
狀態(tài): 核心
有些時(shí)候服務(wù)器會(huì)被要求提供某份文件,此文件不能藉由其 MIME 型態(tài)
對(duì)映來決定型態(tài)。
服務(wù)器必須知會(huì)客戶端文件所包含的型態(tài)(content-type),所以不知道
型態(tài)的時(shí)候它便使用 DefaultType 。例如:
DefaultType image/gif
對(duì)於包含許多沒有 .gif 副文件名的 gif 圖形目錄是合適的。
3.8 <Directory> 指令
語法: <Directory 目錄> ... </Directory>
用於: server config, virtual host
狀態(tài): 核心
<Directory> 以及 </Directory> 用來把一組指令包裝起來,這些指令
將只應(yīng)用到所指明的目錄及其子目錄上。任何可以用於 directory 的
指令都可以使用。Directory 是到某目錄的完整路徑,或是替代字元串
(widecard string) 。在替代字元串中 `?' 能夠符合任何單一字元,
而 `*' 能夠符合任何順序的一些字元。例如:
<Directory /usr/local/htppd/htdocs>
Option Indexes FollowSymLinks
</Directory>
如果有多個(gè) directory 節(jié)區(qū)能符合包含該文件的目錄(或其父目錄)
,那麼分布在 .htaccess 文件里的指令是以最短先符合的順序加以應(yīng)
用的,例如:
<Directory />
AllowOverride None
</Directory>
<Directory /hoem/*>
AllowOverride FileInfo
</Directory>
存取 /home/web/dir/doc.html 這份文件的步驟是:
。應(yīng)用 AllowOverride None 指令(關(guān)掉 .htaccess 文件)。
。應(yīng)用 AllowOverride FileInfo 指令(目錄 /home/web )。
。應(yīng)用任何在 /home/web/.htaccess 里面的 FileInfo 指令。
這個(gè) directory 節(jié)段典型是用在 access.conf 文件里,但它們可以
出現(xiàn)在任何配置檔里。<Directory> 指令不能巢狀使用,而且不能出現(xiàn)
在 節(jié)段里。
3.9 DocumentRoot 指令
語法: DocumentRoot 目錄名稱
預(yù)設(shè): DocumentRoot /usr/local/etc/httpd/htdocs
用於: server config, virtual host
狀態(tài): 核心
這個(gè)指令設(shè)定 httpd 從這個(gè)目錄提供文件服務(wù)。除非符合像是 Alias
這樣的指令,服務(wù)器把所要求的 URL 附加到文件根 (document root)
來組合到達(dá)文件的路徑。例如:
DocumentRoot /usr/web
如此對(duì)於 http://www.my.host.com/index.html 文件的存取便會(huì)參照
到 /usr/web/index.html 。
3.10 ErrorDocument 指令
語法: ErrorDocument 錯(cuò)誤代碼 文件
用於: server config, virtual host
狀態(tài): 核心
有問題或錯(cuò)誤發(fā)生的狀況下,可以配置阿帕奇做四種反應(yīng)
1. 如同 NCSA httpd 1.3 的反應(yīng)
2. 輸出自定的(customized)訊息
3. 重導(dǎo)到某個(gè)本地的 URL 以處理該問題/錯(cuò)誤
4. 重導(dǎo)到某個(gè)外部的 URL 以處理該問題/錯(cuò)誤
2-4 是使用 ErrorDocument 來配置,其後跟隨 HTTP 反應(yīng)碼以及訊息
或是 URL 。
ErrorDocument 500 /cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 http://www.foo.bar/subscription_info.html
ErrorDocument 403 "Sorry can't allow you acess today
參閱: 自定回應(yīng)的文件。
3.11 ErrorLog 指令
語法: ErrorLog 文件名稱
預(yù)設(shè): ErrorLog logs/error_log
用於: server config, virtual host
狀態(tài): 核心
這個(gè)錯(cuò)誤記錄指令設(shè)定文件名稱,服務(wù)器將會(huì)把其遭遇的每個(gè)錯(cuò)誤記錄
到這個(gè)文件去。如果文件名稱不是以 / 開始的話那麼它就會(huì)被假設(shè)為
相對(duì)於 ServerRoot 的路徑。例如:
ErrorLog /dev/null
這會(huì)有效地關(guān)掉錯(cuò)誤記錄。
3.12 Group 指令
語法: Group unix-群組
預(yù)設(shè): Group #-1
用於: server config
狀態(tài): 核心
這個(gè) Group 指令設(shè)定服務(wù)器回答要求時(shí)所處的群組。為了要能夠使用
這個(gè)指令,必須以 root 身分起始執(zhí)行獨(dú)立的服務(wù)器。 Unix-群組可以
是這些其中之一:
群組的名稱
藉由名稱參照所給的群組。
# 跟隨著群組號(hào)碼
藉由號(hào)碼參照某個(gè)群組。
建議你特別設(shè)立一個(gè)群組來執(zhí)行這個(gè)服務(wù)器。某些管理者使用 nobody
這個(gè)使用者,但是這并非永遠(yuǎn)可行或合適的。
注意: 如果你以非 root 使用者的身分啟動(dòng)這個(gè)服務(wù)器,它將無法切換
到指定的群組,并且取而代之的是它將會(huì)繼續(xù)以原來的使用者所屬群組
來執(zhí)行。
安全: 參閱 User 指令對(duì)安全情況的討論。
3.13 IdentityCheck 指令
語法: IdentifyCheck 布林值
預(yù)設(shè): IdentifyCheck off
用於: server config
狀態(tài): 核心
這個(gè)指令為每次的連線起始 RFC931-相容的遠(yuǎn)端使用者名稱記錄,其中
客戶端需得執(zhí)行 identd 或者是類似的東西。這項(xiàng)資訊記錄在存取記錄
(access log)里。布林值是 on 或者 off 。
除非是作為基本的使用量追蹤,這項(xiàng)資訊無論如何不能真的信賴。
3.14 指令
語法: ...
用於: 任何地方
狀態(tài): 核心
以及 用來把一組存取控制指令包裝起來,這些指令
將只應(yīng)用到指定的存取方式上,其中的方式是指任何有效的 HTTP 方式
(method)。除了 或是 <Directory> 之外的任何指令都可以
使用;大部分都不會(huì)被 影響。例如:
require valid-user
如果有個(gè)存取控制指令出現(xiàn)在 指令之外,那麼它會(huì)被應(yīng)用到
所有的存取方式上。
3.15 MaxClient 指令
語法: MaxClients 數(shù)字
預(yù)設(shè): MaxClients 150
用於: server config
狀態(tài): 核心
這個(gè) MaxClients 指令設(shè)定所能支援的同時(shí)存取要求數(shù)目;不會(huì)建立比
此值還多的子程序。
3.16 MaxRequestPerChild 指令
語法: MaxRequestsPerChild 數(shù)字
預(yù)設(shè): MaxRequestsPerChild 0
用於: server config
狀態(tài): 核心
MaxRequestsPerChild 這個(gè)指令設(shè)定一個(gè)獨(dú)立的子服務(wù)程序?qū)⒛芴幚淼?
請(qǐng)求數(shù)量。在處理 MaxRequestsPerChild 個(gè)請(qǐng)求之後,子程序?qū)?huì)被
終止。如果 MaxRequestsPerChild 為 0 的話,那麼該程序永遠(yuǎn)不會(huì)
被終止。
MaxRequestsPerChild 設(shè)為非 0 的值做為限制有兩個(gè)好處:
。藉由記憶體使用量限制程序使用的記憶體數(shù)量;
。藉由賦予程序有限的存留時(shí)間,可以在服務(wù)器負(fù)載降低時(shí)協(xié)助
減少程序的數(shù)目。
3.17 MaxSpareServers 指令
語法: MaxSpareServers 數(shù)字
預(yù)設(shè): MaxSpareServers 10
用於: server config
狀態(tài): 核心
MaxSpareServers 這個(gè)指令設(shè)定最大閑置(idle)子服務(wù)程序數(shù)量。閑置
子服務(wù)程序是目前沒有處理要求的程序。如果有多於 MaxSpareServers
的暫停程序,那麼父程序會(huì)終止超過此數(shù)量的子程序。
只有在非常忙碌的站臺(tái)上才有調(diào)整這個(gè)選項(xiàng)的需要。把這個(gè)參數(shù)設(shè)為非
常大的數(shù)目通常總是個(gè)不好的主意。
參閱 MinSpareServers 以及 StartServers 。
3.18 MinSpareServers 指令
語法: MinSpareServers 數(shù)字
預(yù)設(shè): MinSpareServers 5
用於: server config
狀態(tài): 核心
MinSpareServers 這個(gè)指令設(shè)定最大閑置(idle)子服務(wù)程序數(shù)量。閑置
子服務(wù)程序是目前沒有處理要求的程序。如果有屬於 MinSpareServers
的暫停程序,那麼父程序會(huì)以最高每秒一個(gè)的速率建立新的子程序。
只有在非常忙碌的站臺(tái)上才有調(diào)整這個(gè)選項(xiàng)的需要。把這個(gè)參數(shù)設(shè)為非
常大的數(shù)目通常總是個(gè)不好的主意。
參閱 MaxSpareServers 以及 StartServers 。
3.19 Options 指令
語法: Option 選項(xiàng) 選項(xiàng) ...
用於: server config, virtual host, directory, .htaccess
需求: Options
狀態(tài): 核心
Options 這個(gè)指令控制某個(gè)特定目錄所能使用的服務(wù)器特色。選項(xiàng)可以
設(shè)為 NONE 在此情況下沒有額外的特色會(huì)起動(dòng),或者可以是下列的一個(gè)
或幾個(gè):
All
除了 MultiViews 以外的所有選項(xiàng)。
ExecCGI
CGI 指令稿的執(zhí)行權(quán)限。
FollowSymLinks
服務(wù)器將會(huì)跟照目錄里的符號(hào)鏈結(jié)。
IncludesNOEXEC
服務(wù)端含入(Server-side include) 的權(quán)限。
Indexes
如果有個(gè) URL 對(duì)映到所要求的目錄,而且目錄里面并沒有目錄
索引(DirectoryIndex, e.g. index.html) 存在,那麼服務(wù)器將
會(huì)傳回這個(gè)目錄格式化後的列表。
MultiViews
允許 MultiViews 內(nèi)容協(xié)商。
SymLinksIfOwnerMatch
只有在目標(biāo)文件或目錄與符號(hào)鏈結(jié)的擁有者相同時(shí)服務(wù)器才會(huì)去
跟照符號(hào)鏈結(jié)。
如果多個(gè)選項(xiàng)可以應(yīng)用到某個(gè)目錄上,那麼最底下的指定會(huì)完成;選項(xiàng)
不會(huì)合并。例如:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Option Includes
</Directory>
這樣只有 Includes 會(huì)設(shè)定到 /web/docs/spec 目錄上。
3.20 PidFile 指令
語法: PidFile 文件名稱
預(yù)設(shè): PidFile logs/httpd.pid
用於: server config
狀態(tài): 核心
PidFile 這個(gè)指令設(shè)定服務(wù)器記錄服務(wù)程序的程序號(hào)碼所使用的文件。
如果文件名稱不是以 / 開始那麼它會(huì)被假定是相對(duì)於 ServerRoot 的
目錄。這個(gè) PidFile 只使用在獨(dú)立(standalone)模式。
能夠送個(gè)信號(hào)給服務(wù)器通常會(huì)是有用的,可以關(guān)閉再重新打開錯(cuò)誤記錄
與傳輸記錄,以及重新讀取配置檔。這是藉由傳送 SIGHUP (kill -1)
信號(hào)到列在 PidFile 里的程序號(hào)碼來達(dá)成的。