今天突然發現網站訪問不了了,到伺服器上看apache還是啟動狀態,重啟後就可以正常訪問了。
查看apache的錯誤記錄檔發現有很多下面的錯誤資訊:
指定網路名稱不再可用
[error] an unknown filter was not added: DEFLATE
這個錯誤是由於虛擬機器主機設定檔中使用了DEFLATE,但apache卻沒有使用mod_deflate模組導致的。
比如虛擬機器主機的配置中有:
<Location />
AddOutputFilterByType DEFLATE text/html text/xml text/plain
</Location>
ok,找到原因後,就好解決了,讓apache載入mod_deflate模組即可。
Apache2 推薦使用 mod_deflate 壓縮,mod_gzip 適合apache1.x。
1. 尋找模組 deflate
find /home/test/httpd-2.0.50 -name mod_deflate.c
2. 安裝 mod_deflate
cd /home/test/httpd-2.0.50/modules/filters
/usr/local/apache2/bin/apxs -i -c -a /home/test/httpd-2.0.50/modules/filters/mod_deflate.c
apxs命令參數說明:
-i 此選項表示需要執行安裝操作,以安裝一個或多個動態共用對象到伺服器的modules目錄中。
-a 此選項自動增加一個LoadModule行到httpd.conf檔案中,以啟用此模組,或者,如果此行已經存在,則啟用之。
-c 此選項表示需要執行編譯操作。它首先會編譯C來源程式(.c)files為對應的目標代碼檔案(.o),然後串連這些目標代碼和files中其餘的目標代碼檔案(.o和.a), 以產生動態共用對象dsofile 。如果沒有指定 -o 選項,則此輸出檔案名由files中的第一個檔案名稱推測得到,也就是預設為mod_name.so 。
如果是新安裝apache,直接加上 --enable-headers --enable-deflate 即可.