是上面假定的/webdata/www目錄。
“!/*.jpg=tomcat1”則表示在根目錄下,以“*.jpg”結尾的文件都不由JK進行處理,其它設置含義類似,也就是讓apache處理圖片、js文件、css文件以及靜態html網頁文件。
特別注意,這里有個先后順序的問題,JK模塊在處理網頁根目錄文件的時候,會首先過濾掉不讓自己處理的設定,剩下的設定自己全部處理。
例如上面的設定中,JK模塊會首先在/webdata/www目錄過濾掉所有圖片、flash、js文件、css文件和靜態網頁,將剩下的文件類型自己全部處理。
2.Apache的配置
(1)apache的目錄結構
上面我們通過源碼方式把apache安裝到了/usr/local/apache2下,詳細的目錄結構如表8.1所示:
表8.1
目錄名稱 目錄作用
bin Apache二進制程序及服務程序目錄
lib 庫文件目錄
conf 主配置文件目錄
logs 日志文件目錄
htdocs 默認web應用根目錄
cgi-bin 默認的cgi目錄
modules 動態加載模塊目錄,上面生成的JK模塊,就放在了這個目錄下。
manual Apache使用文檔目錄
man Man幫助文件目錄
error 默認的錯誤應答文件目錄
include 包含頭文件的目錄
icons Apache圖標文件目錄
(2)apache的配置文件
l /usr/local/apache2/conf/httpd.conf(apache主要配置文件)
httpd.conf是包含若干指令的純文本文件,配置文件的每一行包含一個指令,指令是不區分大小寫的,但是指令的參數卻對大小寫比較敏感,“#”開頭的行被視為注解并被忽略,但是,注解不能出現在指令的后邊。配置文件中的指令對整個web服務器都是有效的。
l /usr/local/apache2/bin/apachectl (apache啟動/關閉程序)
可以通過“/usr/local/apache2/bin/apachectl start/stop/restart”的方式啟動/關閉/重啟apache進程。apachectl其實是個shell腳本,它可以自動檢測httpd.conf的指令設定,讓apache在最優的方式下啟動。
l /usr/local/apache2/bin/httpd
httpd是一個啟動apache的二進制文件。
l /usr/local/apache2/modules
Apache是模塊化的web服務器,所有編譯的模塊默認都會放到這個目錄下,然后可以在httpd.conf文件中指定模塊位置,動態加載!
l /usr/local/apache2/logs/access_log
/usr/local/apache2/logs/error_log
這兩個分別為apache的訪問日志文件和錯誤日志文件,通過監測這兩個文件,我們可以了解apache的運行狀態。
(3)httpd.conf基本設定
httpd.conf配置文件有3個部分組成,分別是:全局變量、配置主服務器、配置虛擬主機。
下面我們詳解講述下/usr/local/apache2/conf/httpd.conf文件各個指令的含義。
[root@webserver ~]#vi /usr/local/apache2/conf/httpd.conf
全局變量配置部分
ServerRoot "/usr/local/apache2"
ServerRoot用于指定守護進程httpd的運行目錄, httpd在啟動之后自動將進程的當前目錄切換到這個指定的目錄下,可以使用相對路徑和絕對路徑。
PidFile logs/httpd.pid
PidFile指定的文件將記錄httpd守護進程的進程號,由于httpd能自動復制其自身,因此apache啟動后,系統中就有多個httpd進程,但只有一個進程為最初啟動的進程,它為其他進程的父進程,對父進程發送信號將影響所有的httpd進程。
Timeout 300
Timeout用來定義客戶端和服務器端程序連接的超時間隔,單位為秒,超過這個時間間隔,服務器將斷開與客戶端的連接。
KeepAlive On
KeepAlive用來定義是否允許用戶建立永久連接,On為允許建立永久連接,Off表示拒絕用戶建立永久連接,例如,要打開一個含有很多圖片的頁面,完全可以建立一個tcp連接將所有信息從服務器傳到客戶端即可,而沒有必要對每個圖片都建立一個tcp連接。此選項建議設置為On。
MaxKeepAliveRequests 100
MaxKeepAliveRequests用來定義一個tcp連接可以進行HTTP請求的最大次數,設置為0代表不限制請求次數,這個選項與上面的KeepAlive相互關聯,當KeepAlive設定為On,這個設置開始起作用。
KeepAliveTimeout 15
KeepAliveTimeout用來限定一次連接中最后一次請求完成后延時等待的時間,如果超過了這個等待時間,服務器就斷開連接。
<IfModule prefork.c>
ServerLimit 300
StartServers 5
MinSpareServers 5
MaxSpareServers 20
MaxClients 300
MaxRequestsPerChild 2000
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
上面的兩段指令其實是對web服務器的使用資源進行的設置,apache可以運行在prefork和worker兩種模式下,可以通過/usr/local/apache2/bin/httpd –l來確定當前apache運行在哪種模式,在編譯apache時,如果指定“--with-mpm=MPM”參數,那么apache默認運行在prefork模式下,如果指定的是“--with-mpm=worker”參數,那么默認運行在worker模式下。如果沒有做任何模式指定,那么apache默認也運行在prefork模式下。
prefork采用預派生子進程方式,用單獨的子進程來處理不同的請求,進程之間彼此獨立。
l StartServers表示在啟動apache時,就自動啟動的進程數目。
l MinSpareServers設置了最小的空閑進程數,這樣可以不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能。
l MaxSpareServers設置了最大的空閑進程數,如果空閑進程數大于這個值,apache會自動關閉這些多余進程,如果這個值設置的比小MinSpareServers,則Apache會自動把其調整為 MinSpareServers+1。
l MaxRequestsPerChild設置了每個子進程可處理的最大請求數,也就是一個進程能夠提供的最大傳輸次數,當一個進程的請求超過此數目時,程序連接自動關閉。0意味著無限,即子進程永不銷毀。這里我們設置為2000,已經基本能滿足中小型網站的需要。
l MaxClients設定Apache可以同時處理的請求數目。是對Apache性能影響最大的參數,默認值150對于中小網站基本夠了,但是對于大型網站,是遠遠不夠的,如果請求總數已達到這個值,那么后面的請求就必須排隊,這就是系統資源充足而網站訪問卻很慢的主要原因。理論上這個值設置的越大,可以處理的請求的越多,但是apache默認限制不能超過256,如果要設置的值大于256,可以直接使用ServerLimit指令加大MaxClients。這里我們設置的值是300。
相對于prefork,worker是全新的支持多線程和多進程的混合模型,由于是使用線程來處理請求,所以可以處理更多的請求,對系統資源的使用開銷也比較小。
l MinSpareThreads設置了最少的空閑線程數。
l MaxSpareThreads設置了最多的空閑線程數。
l MaxClients設定同時連入客戶端的最大數。如果現有子進程中的線程總數不能滿足請求的負載,控制進程將派生出新的子進程。默認最大子進程數是16,加大時需要通過ServerLimit來進行聲明,ServerLimit最大值為20000,注意,如果指定了ServerLimit,那么此值乘以ThreadsPerChild必須大于等于MaxClients,而MaxClients必須是ThreadsPerChild的整數倍,否則 Apache將會自動調節到一個相應值。
l ThreadsPerChild設定每個子進程的工作線程數,此選項在worker模式下與性能密切相關,默認最大值為64,如果系統負載很大,不能滿足需求的話,需要使用 ThreadLimit指令,此指令默認最大值為20000,Worker模式下所能同時處理請求總數由子進程數乘以ThreadsPerChild值來確定,保證大于等于MaxClients的設定值。
Listen 80
此指令是設置apache的監聽端口,默認的http服務都是運行在80端口下,當然也可以修改為其它端口。
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule jk_module modules/mod_jk.so
加載mod_jk模塊,上面我們已經生成了JK模塊,并且放到了modules目錄下,這里這需指定加載即可。
……以下省略……
配置主服務器
User nobody
Group nobody
這里是設定執行httpd的用戶和組,默認是nobody用戶啟動apache,這里將組也設置為nobody。
ServerAdmin you@example.com
這里指定的是網站管理員的郵件地址,如果apache出現問題,會發信到這個郵箱。
ServerName www.example.com:80
這里是指定系統的主機名,如果沒有指定,會以系統的hostname為依據。特別注意,這里設定的主機名一定要能找到對應的IP地址(主機名和IP的對應關系可以在/etc/hosts設置)。
UseCanonicalName Off
設定是否使用標準的主機名,如果設置為On,則以ServerName指定的主機名為主。如果web主機有多個主機名,請設置為Off。
DocumentRoot "/usr/local/apache2/htdocs"
此指令非常重要,是用來放置網頁的路徑,apache會默認到這個路徑下尋找網頁,并顯示在瀏覽器上。
<Directory />
#這里的“/”是相對路徑,表示DocumentRoot指定的目錄。
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
上面這段信息是對DocumentRoot指定目錄的權限設定,有3個必須知道的參數:
Options 表示在這個目錄內能夠執行的操作,主要有5個可設定的值:
l Indexes:此參數表示,如果在DocumentRoot指定目錄下找不到以index打頭的文件時,就將此目錄下所有文件列出來,很不安全,不建議使用這個參數。
l FollowSymLinks:表示在DocumentRoot指定目錄下允許符號鏈接到其它目錄。
l ExecCGI:表示允許在DocumentRoot指定的目錄下執行cgi操作。
l Includes:準許SSI(Server-side Includes)操作。
l MultiViews:不常用,根據語言的不同顯示不通的信息提示。
AllowOverride 通過設定的值決定是否讀取目錄中的.htaccess文件,來改變原來所設置的權限,其實完全可以在httpd.conf中設置所有的權限,但是這樣對apache使用者的其它用戶如果要修改一些權限的話,就比較麻煩了,因此apache預設可以讓用戶以自己目錄下的. htaccess文件復寫權限,常用的選項有兩個:
l All:表示可以讀取.htaccess文件的內容,修改原來的訪問權限。
l None:表示不讀取.htaccess文件,權限統一控制。
Order 用來控制目錄和文件的訪問授權,常用的組合有2個:
l Deny,Allow:表示先檢查禁止的設定,沒有禁止的全部允許。
l Allow,Deny:表示先檢查允許的設定,沒有允許的全部禁止。
DirectoryIndex index.html index.htm index.jsp index.html.var
這里是對apache打開網站默認首頁的設定,apache在打開網站首頁時一般會查找index.*之類的網頁文件,DirectoryIndex指令就是設置apache依次尋找能打開網站首頁的順序,例如我們要打開www.ixdba.net網站,apache會首先在DocumentRoot指定的目錄下尋找index.html,也就是www.ixdba.net/index.html,如果沒有找到index.html網頁,那么apache會接著查找index.htm,如果找到就執行www.ixdba.net/index.htm打開首頁,以此類推。
億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯系:億恩小凡
QQ:89317007
電話:0371-63322206
本文出自:億恩科技【www.sunshares.net】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|