明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

APACHE(2)

[摘要]第二章 啟動阿帕奇 2.1 啟動阿帕奇 httpd 這支程序可以藉由網(wǎng)際網(wǎng)路服務(wù)程序 inetd 在每一次有連線要 進(jìn)入 HTTP 服務(wù)的時候啟動,或者另一種方式,它也可以作為服務(wù)程序 (daemo...
第二章

啟動阿帕奇


2.1 啟動阿帕奇

httpd 這支程序可以藉由網(wǎng)際網(wǎng)路服務(wù)程序 inetd 在每一次有連線要
進(jìn)入 HTTP 服務(wù)的時候啟動,或者另一種方式,它也可以作為服務(wù)程序
(daemon)持續(xù)地執(zhí)行,處理請求。無論選擇哪一種方式,都必須設(shè)定這
個 ServerType 指令告訴服務(wù)器它要如何執(zhí)行。


2.2 命令列選項

下列選項可以用在 httpd 的命令列上:

-d serverroot
把 ServerRoot 這個參數(shù)的起始值設(shè)定為 serverroot 。這可以
藉由在配置文件里面的 ServerRoot 命令來加以改變。此預(yù)設(shè)為
/usr/local/etc/httpd 。

-f config
啟動時執(zhí)行在 config 文件里面的指令。如果 config 沒有以 /
作為開始的話,那麼它會被當(dāng)作相對於 ServerRoot 的路徑。此
預(yù)設(shè)值是 conf/httpd.conf 。

-X
以單一程序(single-process)模式執(zhí)行,只用在內(nèi)部除錯;服務(wù)
程序不會脫離終端作業(yè)或是產(chǎn)生任何子程序。不要使用這個模式
來提供正常的網(wǎng)頁服務(wù)。

-v
列印 httpd 的版本,然後結(jié)束。

-?
列印 httpd 選項的一份列表,然後結(jié)束。


2.3 配置檔

此服務(wù)器將會讀取三個配置指令文件。任何指令都可以出現(xiàn)在這些文件
任何一個里面。這些文件的名稱是相對於服務(wù)器的根目錄(server root) ;
這是根是藉由 ServerRoot 指令,或是 -d 這個命令列旗標(biāo)所指定的。
依慣例這些文件是:

conf/httpd.conf
包含控制服務(wù)程序運作的指令。文件名稱可以配合 -f 命令列旗
旗標(biāo)加以改變。

conf/srm.conf
包含控制服務(wù)器提供給客戶端之文件規(guī)格的指令。文件名稱可以
配合 ResourceConfig 指令加以改變。

conf/access.conf
包含控制文件之存取的指令。文件名稱可以配合 AccessConfig
指令加以改變。


無論如何,這些慣例并不需要完全遵奉。

此服務(wù)器也會讀取一個包含 MIME 文件型態(tài)的文件;這個文件名稱藉由
TypesConfig 指令設(shè)定,而且有個 conf/mini.types 作為預(yù)設(shè)。


2.4 記錄檔


2.4.1 pid 檔

服務(wù)程序啟動時,它把父程序 httpd 的程序碼(process id)存往這個
log/httpd.pid 文件。這個文件名稱可以配合 PidFile 指令加以改變
。這個程序碼由管理者用來重新啟動或終止服務(wù)程序;一個 HUP 信號
會使服務(wù)程序重新讀取其配置檔而一個 TERM 信號會使它終止。

如果程序不正常地死掉(或被殺掉),那麼必須殺掉 httpd 子程序。


2.4.2 錯誤記錄

服務(wù)器會將錯誤訊息記錄到一個記錄檔去,預(yù)設(shè)為 log/error_log 。
文件名稱可以藉由 ErrorLog 指令設(shè)定;可以為不同的虛擬主機(jī)設(shè)定不
同的錯誤記錄。


2.4.3 傳輸記錄

服務(wù)器一般會將每個請求記錄到一個傳輸檔,預(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 文件之後將會繼續(xù)讀取這個文件以取得
更多指令。文件名稱系相對於 ServerRoot 路徑。此特色可以使用如下
的方式關(guān)閉:

AccessConfig /dev/null

原本這個文件只包含 <Directory> 節(jié)區(qū);事實上它現(xiàn)在可以包含任何
可以用於服務(wù)器配置的指令。


3.2 AccessFileName 指令

語法: AccessFileName 文件名稱
預(yù)設(shè): AccessFileName .htaccess
用於: server config, virtual host
狀態(tài): 核心

回傳文件給客戶端的時候,如果目錄的存取控制檔有啟動,服務(wù)器會在
到達(dá)這份文件的路徑中的每個目錄里以此名稱搜尋存取控制檔。例如:

AccessFileName .acl

在回傳 /usr/local/web/index.html 這份文件前,此服務(wù)器將會讀取
/.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 指定的文件時會需要知道該文件所宣告的
哪些指令可以改變稍早的存取資訊。

Override 可以設(shè)為 None 在此情況下服務(wù)器將不會讀取該檔,而設(shè)為
All 的話服務(wù)器將會允許所有的指令,或是下列其中之一:


AuthConfig
允許驗認(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 驗認(rèn)領(lǐng)域
用於: directory, .htaccess
需求: AuthConfig
狀態(tài): 核心

這個指令為某個目錄設(shè)定驗認(rèn)區(qū)域的名稱。這個區(qū)域會送給客戶端所以
使用者知道要傳送的使用者名稱以及密碼。它必須藉由 AuthType 以及
require 指令來完成,而且要有像 AuthUserFile 以及 AuthGroupFile
這些指令配合運作。


3.5 AuthType 指令

語法: AuthType 型態(tài)
用於: directory, .htaccess
需求: AuthConfig
狀態(tài): 核心

這個指令為某個目錄選擇使用這驗認(rèn)型態(tài)。目前只有 Basic 實作出來
。它必須藉由 AuthName 以及 require 指令來完成,而且還要有像是
AuthUserFile 以及 AuthGroupFile 這些指令配合運作。


3.6 BindAddress 指令

語法: BindAddress 服務(wù)器位址
預(yù)設(shè): BindAddress *
用於: server config
狀態(tài): 核心

一臺 Unix 的 http 服務(wù)器可以監(jiān)聽到該服務(wù)機(jī)器每個 IP 位址的連線
或者只注意該服務(wù)機(jī)器的一個位址。服務(wù)器位址可以是:

。*
。一個 IP 位址
。一個完整的網(wǎng)際網(wǎng)路領(lǐng)域名稱

如果此值是 * 的話,那麼該服務(wù)器將會監(jiān)聽每一個 IP 位址的連線,
否則它將只監(jiān)聽指定的 IP 位址。

這個選項可以用來作為另一種支援虛擬主機(jī)的方式取代 <VirtualHost>
節(jié)段。


3.7 DefaultType 指令

語法: DefaultType mime-型態(tài)
預(yù)設(shè): DefaultType text/html
用於: server config, virtual host, directory, .htacess
需求: FileInfo
狀態(tài): 核心

有些時候服務(wù)器會被要求提供某份文件,此文件不能藉由其 MIME 型態(tài)
對映來決定型態(tài)。

服務(wù)器必須知會客戶端文件所包含的型態(tài)(content-type),所以不知道
型態(tài)的時候它便使用 DefaultType 。例如:

DefaultType image/gif

對於包含許多沒有 .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>

如果有多個 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 指令。

這個 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): 核心

這個指令設(shè)定 httpd 從這個目錄提供文件服務(wù)。除非符合像是 Alias
這樣的指令,服務(wù)器把所要求的 URL 附加到文件根 (document root)
來組合到達(dá)文件的路徑。例如:

DocumentRoot /usr/web

如此對於 http://www.my.host.com/index.html 文件的存取便會參照
到 /usr/web/index.html 。


3.10 ErrorDocument 指令

語法: ErrorDocument 錯誤代碼 文件
用於: server config, virtual host
狀態(tài): 核心

有問題或錯誤發(fā)生的狀況下,可以配置阿帕奇做四種反應(yīng)

1. 如同 NCSA httpd 1.3 的反應(yīng)
2. 輸出自定的(customized)訊息
3. 重導(dǎo)到某個本地的 URL 以處理該問題/錯誤
4. 重導(dǎo)到某個外部的 URL 以處理該問題/錯誤

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): 核心

這個錯誤記錄指令設(shè)定文件名稱,服務(wù)器將會把其遭遇的每個錯誤記錄
到這個文件去。如果文件名稱不是以 / 開始的話那麼它就會被假設(shè)為
相對於 ServerRoot 的路徑。例如:

ErrorLog /dev/null

這會有效地關(guān)掉錯誤記錄。


3.12 Group 指令

語法: Group unix-群組
預(yù)設(shè): Group #-1
用於: server config
狀態(tài): 核心

這個 Group 指令設(shè)定服務(wù)器回答要求時所處的群組。為了要能夠使用
這個指令,必須以 root 身分起始執(zhí)行獨立的服務(wù)器。 Unix-群組可以
是這些其中之一:

群組的名稱
藉由名稱參照所給的群組。

# 跟隨著群組號碼
藉由號碼參照某個群組。

建議你特別設(shè)立一個群組來執(zhí)行這個服務(wù)器。某些管理者使用 nobody
這個使用者,但是這并非永遠(yuǎn)可行或合適的。

注意: 如果你以非 root 使用者的身分啟動這個服務(wù)器,它將無法切換
到指定的群組,并且取而代之的是它將會繼續(xù)以原來的使用者所屬群組
來執(zhí)行。

安全: 參閱 User 指令對安全情況的討論。


3.13 IdentityCheck 指令

語法: IdentifyCheck 布林值
預(yù)設(shè): IdentifyCheck off
用於: server config
狀態(tài): 核心

這個指令為每次的連線起始 RFC931-相容的遠(yuǎn)端使用者名稱記錄,其中
客戶端需得執(zhí)行 identd 或者是類似的東西。這項資訊記錄在存取記錄
(access log)里。布林值是 on 或者 off 。

除非是作為基本的使用量追蹤,這項資訊無論如何不能真的信賴。


3.14 指令

語法: ...
用於: 任何地方
狀態(tài): 核心

以及 用來把一組存取控制指令包裝起來,這些指令
將只應(yīng)用到指定的存取方式上,其中的方式是指任何有效的 HTTP 方式
(method)。除了 或是 <Directory> 之外的任何指令都可以
使用;大部分都不會被 影響。例如:


require valid-user


如果有個存取控制指令出現(xiàn)在 指令之外,那麼它會被應(yīng)用到
所有的存取方式上。


3.15 MaxClient 指令

語法: MaxClients 數(shù)字
預(yù)設(shè): MaxClients 150
用於: server config
狀態(tài): 核心

這個 MaxClients 指令設(shè)定所能支援的同時存取要求數(shù)目;不會建立比
此值還多的子程序。


3.16 MaxRequestPerChild 指令

語法: MaxRequestsPerChild 數(shù)字
預(yù)設(shè): MaxRequestsPerChild 0
用於: server config
狀態(tài): 核心

MaxRequestsPerChild 這個指令設(shè)定一個獨立的子服務(wù)程序?qū)⒛芴幚淼?
請求數(shù)量。在處理 MaxRequestsPerChild 個請求之後,子程序?qū)?
終止。如果 MaxRequestsPerChild 為 0 的話,那麼該程序永遠(yuǎn)不會
被終止。

MaxRequestsPerChild 設(shè)為非 0 的值做為限制有兩個好處:

。藉由記憶體使用量限制程序使用的記憶體數(shù)量;
。藉由賦予程序有限的存留時間,可以在服務(wù)器負(fù)載降低時協(xié)助
減少程序的數(shù)目。


3.17 MaxSpareServers 指令

語法: MaxSpareServers 數(shù)字
預(yù)設(shè): MaxSpareServers 10
用於: server config
狀態(tài): 核心

MaxSpareServers 這個指令設(shè)定最大閑置(idle)子服務(wù)程序數(shù)量。閑置
子服務(wù)程序是目前沒有處理要求的程序。如果有多於 MaxSpareServers
的暫停程序,那麼父程序會終止超過此數(shù)量的子程序。

只有在非常忙碌的站臺上才有調(diào)整這個選項的需要。把這個參數(shù)設(shè)為非
常大的數(shù)目通?偸莻不好的主意。

參閱 MinSpareServers 以及 StartServers 。


3.18 MinSpareServers 指令

語法: MinSpareServers 數(shù)字
預(yù)設(shè): MinSpareServers 5
用於: server config
狀態(tài): 核心

MinSpareServers 這個指令設(shè)定最大閑置(idle)子服務(wù)程序數(shù)量。閑置
子服務(wù)程序是目前沒有處理要求的程序。如果有屬於 MinSpareServers
的暫停程序,那麼父程序會以最高每秒一個的速率建立新的子程序。

只有在非常忙碌的站臺上才有調(diào)整這個選項的需要。把這個參數(shù)設(shè)為非
常大的數(shù)目通?偸莻不好的主意。

參閱 MaxSpareServers 以及 StartServers 。


3.19 Options 指令

語法: Option 選項 選項 ...
用於: server config, virtual host, directory, .htaccess
需求: Options
狀態(tài): 核心

Options 這個指令控制某個特定目錄所能使用的服務(wù)器特色。選項可以
設(shè)為 NONE 在此情況下沒有額外的特色會起動,或者可以是下列的一個
或幾個:

All
除了 MultiViews 以外的所有選項。

ExecCGI
CGI 指令稿的執(zhí)行權(quán)限。

FollowSymLinks
服務(wù)器將會跟照目錄里的符號鏈結(jié)。

IncludesNOEXEC
服務(wù)端含入(Server-side include) 的權(quán)限。

Indexes
如果有個 URL 對映到所要求的目錄,而且目錄里面并沒有目錄
索引(DirectoryIndex, e.g. index.html) 存在,那麼服務(wù)器將
會傳回這個目錄格式化後的列表。

MultiViews
允許 MultiViews 內(nèi)容協(xié)商。

SymLinksIfOwnerMatch
只有在目標(biāo)文件或目錄與符號鏈結(jié)的擁有者相同時服務(wù)器才會去
跟照符號鏈結(jié)。

如果多個選項可以應(yīng)用到某個目錄上,那麼最底下的指定會完成;選項
不會合并。例如:


<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Option Includes
</Directory>


這樣只有 Includes 會設(shè)定到 /web/docs/spec 目錄上。


3.20 PidFile 指令

語法: PidFile 文件名稱
預(yù)設(shè): PidFile logs/httpd.pid
用於: server config
狀態(tài): 核心

PidFile 這個指令設(shè)定服務(wù)器記錄服務(wù)程序的程序號碼所使用的文件。
如果文件名稱不是以 / 開始那麼它會被假定是相對於 ServerRoot 的
目錄。這個 PidFile 只使用在獨立(standalone)模式。

能夠送個信號給服務(wù)器通常會是有用的,可以關(guān)閉再重新打開錯誤記錄
與傳輸記錄,以及重新讀取配置檔。這是藉由傳送 SIGHUP (kill -1)
信號到列在 PidFile 里的程序號碼來達(dá)成的。




標(biāo)簽:APACHE(2)