LAMP-Apache 優化

1.配置cronolog進行日誌輪詢
Linux下運行的Web服務器Apache,默認日誌文件是不分割的,
一個整文件既不易於管理,也不易於分析統計。
安裝cronolog後,可以將日誌文件按時間分割,易於管理和分析。

下載cronolog
cd /tuwei/tools
tar zxf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install

配置日誌輪詢

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
添加以下內容 %w表示按周輪詢
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache2/log/accesswww%w.log" combined

2.錯誤頁面優雅顯示
可以將404等錯誤頁面重新定向到網站首頁或其他頁面,提示用戶體驗
vim /usr/local/apache2/conf/httpd.conf

修改以下內容
ErrorDocument 404 http://blog.51cto.com/tuwei
提示:支持url和文件
拓展:apache的優雅顯示
vim /usr/local/apache2/conf/httpd.conf

[root@lamp01 conf]# grep ErrorDocument httpd.conf
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
ErrorDocument 404 http://blog.51cto.com/tuwei
3.mod_deflate文件壓縮功能

Gzip的思想就是把文件現在服務端進行壓縮,然後再傳輸。

添加以下內容到虛擬主機,可以在http.conf最後加入
<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>
4.mod_expires緩存

5.更改apache的默認用戶 實際工作中最好改爲別人不知道的用戶
useradd -M -s /sbin/nologin xxx
6.worker模式,提升併發數
7.屏蔽apache版本等敏感信息
修改httpd.conf文件,打開httpd-default.conf模塊
修改httpd-default.con文件,ServerSignature off以及ServerTokens Prod
b不過還是有server=Apache字樣,若要完全去掉需重新編譯
徹底去掉banner,修改httpd.h
8.apache目錄文件權限設置(root 755,文件644)

提示:在網站架構中,應把資源文件,包括用戶上傳的圖片、附件等和程序分離,
最好把上傳程序也分離,這樣就可以從容授權了

9.開啓httpd-mpm.conf增加連接數
修改httpd.conf文件,打開httpd-mpm.conf模塊
1.apache服務爲worker模塊的配置
默認爲
<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>

修改後
<IfModule mpm_worker_module>
StartServers 5
MaxClients 2000
ServerLimit 25
MinSpareThreads 50
MaxSpareThreads 200
ThreadLimit 200
ThreadsPerChild 100
MaxRequestsPerChild 0
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>

備註:MaxClients <=ServerLimit * ThreadsPerChild
2.apache服務爲perfork模式,生產環境配置文件httpd-default.conf併發連接數配置

StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000

10.apache防盜鏈功能

11.禁止目錄index

<Directory "/var/tuwei">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

或者

<Directory "/var/tuwei">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

12.禁止用戶覆蓋(重載)

AllowOverride None #禁止用戶覆蓋(重載)

加快服務器速度,因爲它不再爲每個請求尋找每個目錄訪問控制文件.htaccess
13.關閉CGI
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
..............................................................................
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
刪除以上內容

14.避免使用.htaccess文件(分佈式配置文件)

首先是性能考慮。如果AllowOverride啓用了.htaccess文件,則apache需要在每個目錄查找該文件,因此,
無論是否用到,啓用該文件都會導致性能的下降。
其次是安全考慮,這樣會允許用戶自己修改服務器的配置。
默認在unix平臺能夠使用.htaccess來對目錄權限進行規則定義,這是不安全的,建議關閉。
默認選項:
AccessFileName .htaccess
建議改爲
#AccessFileName .htaccess
15.apache的安全模塊
mod_evasive20 防DDOS mod_limitipconn(針對單站點)配置,mod_security2 防SQL注入等
make jail 是一個自動把建立jail所需要的程序放到jail內的軟件,使用python編寫

mod_security http://www.modsecurity.org

apache的一個模塊,具有請求過濾,日誌審計等功能,可以防止SQL INjection,跨站腳本***

16.正確途徑取得源代碼,勤大apache補丁

17.apache日誌授權 root 700權限

chown -R root.root logs
chmod -R 700 logs

18.系統內核參數優化

19.禁止php解析指定站點目錄

20.使用tmpfs文件系統替代頻繁訪問的目錄
php圖片上傳 php服務異常最終解決方案 mount tmpfs
編輯 /etc/rc.local
mount -t tmpfs tmpfs /tmp

21.儘可能減少http請求數

常用方法,合併js css以及image maps和css sprites等

工具網站 http://www.csssprites.com

22.使用CDN做網站加速

簡單地講,通過現有的internet中增加一層新的網絡架構。將網站的內容發佈到最接近用戶的
cache服務器內,通過DNS負載均衡技術,實現用戶就近訪問cache服務器的內容,這樣可以有效
減少數據在網絡上傳輸的時間,提高速度。

23.apache程序架構優化
程序頁面服務器
圖片附件服務器
上傳服務器
以上三者的功能儘量分離
a。分離最佳方式是分別使用獨立服務器(需要程序支持)
b。次選方案在前端負載均衡器通過haproxy/nginx根據目錄或者擴展名請求後面
對應的服務器
根據擴展名分發
根據url分發
其他的拋給web服務器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章