標籤:做了 自動 follow 錯誤提示 out 方案 ges 避免 修改
Apache服務最佳化
1 配置Apache日誌輪詢
apache內建的日誌輪詢工具也是可以使用的,但是老師測試會丟日誌,所以採用cronolog來配置日誌輪詢 tar zxf cronolog-1.6.2.tar.gz cd cronolog-1.6.2 ./configure make make install <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/var/html/www" ServerName www.etiantian.com ServerAlias etiantian.com ErrorLog "logs/www.etiantiancom-error_log" # CustomLog "logs/www.etiantiancom-access_log" common CustomLog "|/usr/local/sbin/cronolog /application/apache/logs/access_www_%w.log" combined #注意這裡要寫全路徑,%w表示按周輪詢 </VirtualHost> |
2 錯誤頁面優雅顯示
[[email protected] bin]# grep "ErrorDocument 404" /application/apache/conf/httpd.conf #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #可以指定404錯誤提示的頁面,可以是URL,也可以是指令碼或者檔案 |
3 mod_deflate檔案壓縮功能
3.1 mod_deflate模組介紹
mod_deflate模組提供了DEFLATE輸出過濾器,允許伺服器在將輸出內容發送到用戶端之前進行壓縮,提升使用者體驗。
3.2 mod_deflate安裝檢查
(1) 編譯安裝httpd情況時是否已經安裝mod_deflate,命令為:
[[email protected] ~]# /application/apache/bin/apachectl -l |grep mod_deflate mod_deflate.c |
(2) 如果是以DSO方式編譯的(--enable-so開啟DSO編譯方式),則查看方法為:
[[email protected] ~]# ls /application/apache/modules/ |grep mod_deflate mod_deflate.so [[email protected] ~]# grep mod_deflate.so /application/apache/conf/httpd.conf LoadModule deflate_module modules/mod_deflate.so [[email protected] ~]# /application/apache/bin/apachectl -M |grep deflate deflate_module(dynamic) #static是表示在編譯的時候就已經安裝了 Syntax OK |
特別說明:以上兩種情況不能同時存在,否則會有衝突
3.3 mod_deflate安裝
cd /root/tools/httpd-2.2.25/modules/filters /application/apache/bin/apxs -c -a -i mod_deflate.c ll /application/apache/modules/mod_deflate.so #如果提示衝突,要把/application/apache/conf/httpd.conf檔案中,LoadModule deflate_module modules/mod_deflate.so這句命令注釋掉。 |
3.4 mod_deflate應用
<ifmodule mod_deflate.c> DeflateCompressionLevel 9 SetOutputFilter DEFLATE DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio #Logformat ‘ “%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate #CustomLog logs/deflate_log.log deflate </ifmodule> #把以上這段代碼嵌入到/application/apache/conf/extra/httpd-vhosts.conf的/var/html/www配置內容裡面(也可以配置到全域目錄裡面) <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/var/html/www" ServerName www.etiantian.com ServerAlias etiantian.com ErrorLog "logs/www.etiantiancom-error_log" CustomLog "logs/www.etiantiancom-access_log" common <ifmodule mod_deflate.c> DeflateCompressionLevel 9 SetOutputFilter DEFLATE DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio #Logformat ‘ “%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate #CustomLog logs/deflate_log.log deflate </ifmodule> </VirtualHost> 測試:把老師的test_deflate.tar.gz壓縮包上傳到/var/html/www下,然後解壓,不需要做任何移動。開啟Firefox開發專版,訪問192.168.1.4/test/deflate.html,開啟firebug,在YSlow中可以看到測試結果。 |
4 mod_expires緩衝功能
Expire其實就是通過header報文來指定特定類型的檔案在瀏覽器中的緩衝時間。大多數的圖片,flash在發布後都不是需要經常修改的,做了緩衝以後這樣的瀏覽器以後就不需要再從伺服器下載這些檔案而是直接從緩衝中讀取,這樣再訪問頁面的速度會大大加快。
在剛才的mod_deflate模組配置內容下面加入以下配置: ExpiresActive on ExpiresDefault "access plus 12 month" ExpiresByType text/html "access plus 12 months" ExpiresByType text/css "access plus 12 months" ExpiresByType image/gif "access plus 12 months" ExpiresByType image/jpeg "access plus12 12 months" ExpiresByType image/jpg "access plus 12 months" ExpiresByType image/png "access plus 12 months" EXpiresByType application/x-shockwave-flash "access plus 12 months" EXpiresByType application/x-javascript "access plus 12 months" ExpiresByType video/x-flv "access plus 12 months" [[email protected] www]# curl -I 192.168.1.4/01.jpg HTTP/1.1 200 OK Date: Sun, 17 Nov 2013 03:51:45 GMT Server: Apache/2.2.25 (Unix) DAV/2 PHP/5.3.10 Last-Modified: Sun, 07 Nov 2010 12:20:20 GMT ETag: "40904-486f3-4947587f66900" Accept-Ranges: bytes Content-Length: 296691 Cache-Control: max-age=31104000 Expires: Wed, 12 Nov 2014 03:51:45 GMT Vary: Accept-Encoding Content-Type: image/jpeg |
5 更改Apache預設使用者
建立一個使用者例如Apache(最好起一個不常用的名字),用於子進程和子線程。
useradd -M -s /sbin/nologin apache vi /application/apache/conf/httpd.conf User apache Group apache |
6 worker模式提升並發數
7 屏蔽apache版本等敏感資訊
(1) 修改httpd.conf檔案,開啟httpd-default.conf模組 (2) 修改httpd-default.conf檔案,ServerSignature Off以及ServerTokens Prod之後apachectl graceful使設定生效 |
8 apache目錄檔案使用權限設定(root,目錄755,檔案644)
[[email protected] html]# ll 總計 12 drwxr-xr-x 2 root root 4096 09-03 18:51 bbs drwxr-xr-x 5 root root 4096 11-12 01:53 blog drwxr-xr-x 3 root root 4096 11-17 11:43 www |
提示:在網站架構中,應把資源檔,包括使用者上傳的圖片,福建等和程式分離,最好把上傳程式也分離,這樣就可以從容授權了。
9 開啟httpd-mpm.conf增加串連數
10 apache防盜鏈功能
11 禁止目錄Index
Option FollowSymLinks 這一個參數去掉Index選項 |
12 禁止使用者覆蓋(重載)
AllowOverride None #禁止使用者覆蓋(重載) #加快伺服器速度,因為它不再為每個請求尋找每個目錄存取控制問價(.htaccess) |
13 關閉CGI
ScriptAlias /cgi-bin/ "/application/apache2.2.25/cgi-bin/" <Directory "/application/apache2.2.25/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> |
刪除以上內容
14 避免使用.htaccess檔案(分布式設定檔)
首先從效能上,就應該避免使用.htaccess檔案
15 apache安裝模組
(mod_evasive20防DDOS、mod_limitipconn(針對單網站)配置、mod_security防SQL注入等 makejail http://www.floc.net/makejail 是一個自動把建立jail所需要的程式放到jail內的軟體 mod_security http://www.modsecurity.org 是apache的一個模組,他有請求過濾,日誌審計等功能,可以防止SQL Injection,跨站指令碼攻擊,很不錯的一個模組 |
16 正確途徑取得原始碼,勤打apache補丁
17 apache日誌授予root700許可權
chown -R root.root logs chmod -R 700 logs |
18 系統核心參數最佳化
19 禁止PHP解析指定網站目錄
20 使用tmps檔案系統替代頻繁訪問的目錄
21 儘可能減少HTTP請求數
22 使用CDN做網站加速
23 apache程式架構最佳化
1) 程式頁面伺服器 2)圖片附件伺服器 3)上傳伺服器 三者的功能盡量分離 a) 分離最佳方式是分別使用獨立的伺服器(需要程式支援) b) 次選方案在前端負載平衡器通過haproxy/nginx根據目錄或副檔名請求後面對應的伺服器 |
Linux課程筆記 Apache的最佳化