Linux網(wǎng)站架構(gòu)系列之a(chǎn)pache----調(diào)優(yōu)篇
CustomLog |/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log combined
按小時輪詢(生產(chǎn)環(huán)境較常見用法):
CustomLog |/usr/local/sbin/cronolog /app/logs /access_www_ %Y%m%d%H.log combined
六、錯誤頁面優(yōu)雅顯示
為了提升網(wǎng)站的用戶體驗,避免404,403之類的丑陋的默認錯誤提示出現(xiàn),我們需要對錯誤頁面進行優(yōu)化,讓他們變的漂亮一點。錯誤頁面不僅在于告訴用戶訪問出現(xiàn)了問題,而且需要引導用戶到正確的頁面。
錯誤頁面優(yōu)雅化顯示的實現(xiàn)方式主要有兩種,下面我們主要以404錯誤為例:
第一種:在apache的主配置文件中的
[root@sunsky /]# vi /usr/local/apache/conf/
AllowOverride None
Options None
Require all granted
ErrorDocument 404 /l #將404錯誤跳轉(zhuǎn)到/www/html下的l頁面上
第二種方法:在apache的虛擬主機配置文件中的
ServerAdmin
DocumentRoot /www/html
ServerName www.sunsky.pw
ServerAlias sunsky.pw
CustomLog |/usr/local/sbin/cronolog /app/logs/www_access_%Y%m%d.log combined
ErrorLog |/usr/local/sbin/cronolog /app/logs/www_error_%Y%m%d.log
ErrorDocument 404 (php),js,css,xml,txt等。特殊情況就是像一些首頁上有很多廣告投放的js代碼,由于需要每次加載進而進行來訪信息統(tǒng)計,所以這些廣告代碼擁有者網(wǎng)站的js不會經(jīng)過gzip壓縮,
mod_deflate模塊,在我們前篇部署的時候已經(jīng)編譯安裝進去了。
那么如果沒有安裝,如何安裝呢?并且如果不知道到是否安裝了,如何查看呢?
1、mod_deflate模塊檢查及安裝
由于apache2.2.x和2.4.x這兩個版本在檢查mod_deflate模塊是否安裝方法方法是不同的。最后,我無奈做了很多測試,下面建議大家這樣來檢查。
[root@c64-web /]# /usr/local/apache/bin/apachectl -M | grep deflate
deflate_module (static) #此種結(jié)果為編譯安裝時裝的
[root@c64-web /]# /usr/local/apache/bin/apachectl -M | grep deflate
deflate_module (shared) #此種結(jié)果為DSO方式安裝的
安裝了的話,就可以直接進行壓縮配置了,如果沒有安裝,下面為安裝方法
a)編譯時安裝方法
編譯的時候跟上--enable-deflate即可實現(xiàn)安裝
b)DSO方式安裝
[root@c64-web /]# cd /server/tools/;#切到apache源碼包mod_deflate所在的目錄下
[root@c64-web filters]# /usr/local/apache/bin/apxs -c -i -a mod_deflate.c #以dso的方式編譯安裝到apache中
[root@c64-web filters]# ll /usr/local/apache/modules/mod_deflate.so #檢查mod_deflate是否安裝,成功安裝這里會顯示出該文件
-rwxr-xr-x 1 root root 76697 11月 5 07:50 /usr/local/apache/modules/mod_deflate.so
擴展:使用DSO方式安裝,apxs后跟的參數(shù)詳解
-c 此選項表明需要執(zhí)行編譯操作。它首先會編譯c源程序(.c)files為對應(yīng)的目標代碼文件(.c),然后連接這些目標代碼和files中其余的目標代碼文件(.c和.a),以生成動態(tài)共享對象dsofile。如果沒有指定-s選項,則此輸出文件名由files中的第一個文件名推測得出,也就是默認mod_name.so。
-i 此選項表示需要執(zhí)行安裝操作,以安裝一個或多個動態(tài)共享對象到服務(wù)器的modules目錄。
-a 此選項自動增加一個LoadModule行到文件中,以激活此模塊,或者,如果此行已經(jīng)存在,則啟用之。
壓縮模塊配置
2、配置壓縮參數(shù)
注意如果我們是編譯安裝時已經(jīng)編譯進去的,此時我們需要先將主配置文件中
LoadModule deflate_module modules/mod_deflate.so
此行解鎖后再進行下面操作,不然下面的操作會報錯。
我們需要在虛擬機的
DeflateCompressionLevel 9 #壓縮等級,越大效率越高,消耗CPU也越高
SetOutputFilter DEFLATE #啟用壓縮
AddOutputFilterByType DEFLATE text/html text/plain text/xml #僅壓縮限制特定的MIME類型文件:
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/gif image/png image/jpe image/swf image/jpeg image/bmp
#DeflateFilterNote ratio #在日志中放置壓縮率標記,下面是記錄日志的,這個功能一般不用
#LogFormat '%r %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
#CustmLog logs/deflate_log.log deflate
下面是朋友公司的另外一種壓縮配置,有興趣的朋友們也可以操作操作。
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
DeflateFilterNote Input instream #聲明輸入流的byte數(shù)量
DeflateFilterNote Output outstream #聲明輸出流的byte數(shù)量
DeflateFilterNote Ratio ratio #聲明壓縮的百分比
#LogFormat '%r %{outstream}n/%{instream}n (%{ratio}n%%)' deflate #聲明日志類型
#CustomLog logs/deflate_log.log deflate #聲明日志類型
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript #僅壓縮限制特定的MIME類型文件
執(zhí)行上面的添加后,我們對apache進行優(yōu)雅重啟
[root@c64-web /]# /usr/local/apache/bin/apachectl graceful
下面訪問我們的網(wǎng)站,然后用火狐或者google游覽器的YSLOW插件進行壓縮效果的查看
評論