Apahce服務器是一個穩定的、商業性的和公開程序源代碼的HTTP服務器。其在HTTP市場中占有主導性的地位。據權威部門統計,Apache服務器的市場占有率大概在60%左右,可見其市場的影響力。因為Apache服務器可以提供HTTP通信協議的標準平臺,所以無論是在商業領域又或者是在實驗領域其都可以幫助企業建立一個穩定的WEB應用環境。在這里筆者廢話就不說了,只說說在配置Apache服務器過程中我認為比較重要的兩個內容。
一、靈活應用重定向功能。
有時候處于某些原因,如添加硬盤或者升級服務器的需要,系統管理員需要更改WEB服務器中網頁的存儲位置。此時該如何讓WEB服務器了解這個變更的信息呢?如果一張張的去更改網頁的位置,顯然工作量太大。在某些WEB服務器中,是通過相對路徑來解決這個問題的。只要把跟文件夾移動到另一個位置,然后只需要更改根文件夾的位置,那么這個文件夾中的網頁內容,由于采取了相對路徑為此就不需要一一進行調整的。不過在Apache服務器中則是采取了另外一種獨特的處理機制,即重定向功能。
由于當客戶端瀏覽器向WEB服務器請求訪問某一個網頁時,WEB服務器會先找出這個URL地址所指向的網頁,然后把網頁的內容回傳給瀏覽器。可以如果系統管理員由于特定的需要移動了WEB站點網頁的位置時,就很難保證所有指到舊網頁地址的連接全部更改成新的位置。在遇到這種情況的時候,系統管理員需要對涉及到的連接進行一一測試并調整,以保證連接的正確性。顯然這個手工調整的工作量很大,因為某個網頁中涉及到的連接可能會有成百上千條。一一更改這些連接所需要耗費的工作量不是小數目。即使數量比較少,但是讓系統管理員手工重復的更改這些信息,他們也不在愿意做,因為太沒有挑戰性。為此,能否有一次性更新的方法呢?就好像在數據庫中,利用Where語句把需要更新的內容查找出來然后再利用Update語句把需要更新的內容進行一次性調整。在Apache服務器中就是這么實現的。如指需要在Apache服務器命令行環境中使用命令redirect 舊URL地址 新URL地址即可。第一個參數舊URL地址就好像是一個查詢條件,把符合這個條件的記錄查找出出來(其他網頁指向這個網頁的地址);然后利用新的URL地址進行替換。如此到客戶端請求訪問這個網頁時,瀏覽器就會把新的網頁內容返回給客戶端。注意此時客戶端發出的請求采用的是舊的WEB地址(客戶端并不知道在服務器后臺所做的修改),而WEB服務器發現網頁位置更改過后,就會重定向客戶端網頁訪問的請求。把客戶端的發送的舊地址利用新地址來代替。這就是Apache服務器所采取的重定向機制。
利用這個重定向功能不僅可以解決網頁位置變動的問題,而且還有其他一些有用的用途。如當在對網頁進行改變或者新添加功能的時候,可能需要在短時間內中止用戶的訪問。如有些論壇出于合并的需要,或者可能被黑客攻擊而不得不暫時中止訪問。此時為了表示對訪問者的歉意,他們往往希望能夠把客戶的訪問請求連接到一個特殊的頁面中。在這個頁面中會表明這個網站暫時關閉的原因以及在此開發的時間。讓訪問者看到這個信息之后能夠知道這只是暫時關閉,而不是永久性的關閉。這有利于穩住老客戶的心,讓好不容易才積累起來的客戶群不丟失。其實這也可以通過重定向功能來實現。如系統管理員預先定義好一個網頁,然后在需要的時候利用重定向功能更新網站地址即可。等到故障恢復之后,再啟用原先的連接。
所以說,Apache服務器中重定向功能是一項很有用的內容。其不僅可以用來完成其他服務器上的相對路徑的功能,而且還可以完成其所不具備的內容。如果Linux系統管理員要用Apache服務器來實現企業的HTTP服務器的話,則重定向功能無疑是其必須掌握的一項功能。
二、緩存設置。
在這里講的緩存,給其他應用服務器上所說的高速緩存是兩個完全不同的概念,系統管理員不能夠混為一談。其他應用服務器講的高速緩存往往是指把用戶的內容保存在內存中。但是由于內存的容量有限,為此保存的內容并不是很多。但是由于網頁中往往包含著比較豐富的圖片、動畫、背景音樂等信息,為此光憑內存中這點容量往往起到的作用有限。為此在Apache服務器中其實現了一種基于硬盤的數據緩存技術。在Apache服務器中所講的緩存,是指將客戶端上一次請求所得到的信息,如網頁的內容、圖片等信息,保存在服務器的硬盤中(而不是內存上)。當客戶端下次請求同一個信息時,即可將此內容立即響應給客戶端。如此就可以大幅度的降低網頁的響應時間,可以提供更高速的網絡應用效率。由于硬盤往往沒有內存空間的限制,為此可以緩存更多的內容。在這著Apache服務器的緩存功能時,主要抓住以下幾個方面的問題。
1、緩存的容量設置。雖然說硬盤的空間比較大,但是還是必須為數據緩存設置一個最大的上限。否則的話日積月累,服務器硬盤遲早會被這個數據緩存所消耗光。故啟用數據緩存技術后,系統管理員不要忘了應該立即采用CacheSize參數來設置這個緩存的上限。當服務器對緩存容量進行檢查時,如果超過這個最高的限制,則服務器會將超過部分的內容刪除。注意這個參數的單位是KB,如果需要這只2M緩存的話,就需要把這個參數的值設置為2048。這個值到底該設置多少呢?沒有一個固定的標準。要根據服務器所提供的內容來判斷。如果服務器中有大量動畫、電影等等,則最好能夠設置比較大的緩存空間。如此的話訪問同一資源的人越多,后續的訪問者借助數據緩存技術就能夠得到比較好的訪問速率。
2、檢查數據緩存的時間間隔。服務器會定時的檢查數據緩存空間。一是要保證這個數據緩存的空間在最大的限值之內;二是需要了解數據緩存中內容是否有及時更新。 默認情況下,這個更新時間是由Apache服務器的CacheGcinterval參數來確定,默認值為4小時。根據服務器用途的不同,可以更改這個值。如服務器是一個提供及時新聞的服務器,那么這個值就需要設置的少一點。在啟用數據緩存的情況下,就需要啟用這個參數。如果沒有啟用這項功能的話,則服務器就不會對緩存中的內容進行檢查,也就不會將超過緩存最高容量上限的內容進行自動刪除。這就會導致硬盤空間逐漸被消耗,直道占滿整個硬盤為止。在設置這個參數的時候,往往需要在硬盤空間與數據有效性之間進行抉擇。有時候系統管理員必須要不斷的調整、追蹤后才能夠最終確定一個合理的參數。
另外,往往這個參數會跟CacheLastMoidffiedFaor參數一同使用。顧名思義,這個參數主要用來數據緩存空間中文件更新的,不過這不是一個簡單的時間參數,而是一個時間系數。在Apache服務器中是根據這個系數來計算緩存文件中的過期時間。如數據緩存中的某個文件起最后改動到目前已經有30個小時,而這個參數為0.1(默認值),那么過期時間就是這兩個值的乘積,即為3小時。在3個小時之后,會自動把這個數據緩存文件刪除(前提是啟用了上面這個數據緩存的時間間隔參數)。這可以節省數據緩存的空間,提高硬盤的利用率;同時也可以保證數據緩存中信息的有效性。
3、禁用緩存。其實并不是所有網站都需要這個數據緩存。如對于一些提供基金凈值或者股票動態信息的網站,則不需要采用數據緩存。因為這些網站的信息時效性比較高。一般來說,內容經常需要變動的網站不需要數據緩存技術。若采用這種技術的話,有可能是搬起石頭砸自己的腳。為此如果需要禁用這個數據緩存的話,則可以利用NoCahce指令來禁用這個數據緩存的功能。如果在一臺服務器上采用了虛擬主機等技術實現多個網站的話,還可以根據網站的用途不同,來進行分別設置。如把提供及時信息的新聞或者基金等網站設置為禁用緩存,而把其他的網站設置為采用緩存。甚至還可以根據地址來為特定的網頁來啟用或者禁用數據緩存。顯然,Apache數據緩存管理機制要比其他應用服務器靈活的多。