Linux課程筆記 Apache的最佳化

來源:互聯網
上載者:User

標籤:做了   自動   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的最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.