Linux網(wǎng)站架構(gòu)系列之a(chǎn)pache----調(diào)優(yōu)篇
前面兩篇博文講解了apache的部署和配置等方面知識(shí),本篇將為大家詳細(xì)講解生產(chǎn)環(huán)境中對(duì)apache服務(wù)各個(gè)方面的優(yōu)化調(diào)試。
本文引用地址:http://butianyuan.cn/article/201610/305551.htm生產(chǎn)環(huán)境中,大家肯定不會(huì)部署了apache之后就完事拿去上線了。光桿子上戰(zhàn)場(chǎng)等著完蛋的嘛!因此,不論從安全還是性能角度,我們必須在apache服務(wù)上線之前,對(duì)其做諸多的優(yōu)化調(diào)試才行。因此,本篇筆者通過總結(jié)自己的學(xué)習(xí)和工作經(jīng)驗(yàn),歸納總結(jié)出的apache調(diào)優(yōu)的20個(gè)小點(diǎn)。
本文篇幅有點(diǎn)長(zhǎng),本來想分開寫了,后來想想還是放在一篇博文吧。因此,大家就擔(dān)待擔(dān)待吧。
環(huán)境:
CentOS6.4 x86_64位 采用最小化安裝,系統(tǒng)經(jīng)過了基本優(yōu)化篇
apache版本:
apr版本:apr-1.4.8
apr-util版本:apr-util-1.5.2
pcre版本:pcre-7.8
源碼包存放位置:/server/tools
源碼包編譯安裝位置:/etc/local/軟件名稱
一、源碼官方下,補(bǔ)丁及時(shí)打
正如我們?cè)赼pache部署篇講到的我們需要對(duì)下載的源碼包進(jìn)行驗(yàn)證一樣,我們?cè)谔暨xapache源碼安裝包的時(shí)候,一定要去官網(wǎng),不要去亂七八糟的站點(diǎn)進(jìn)行下載,防止源碼包被別有用心的人動(dòng)過手腳,導(dǎo)致后面對(duì)公司業(yè)務(wù)造成不必要損失。
另外為了apache的安全性和性能考慮,我們一定要多多關(guān)注apache的官網(wǎng)的補(bǔ)丁發(fā)布情況,一旦有新的補(bǔ)丁,我們一定要及早打上。特別是一些安全補(bǔ)丁,防止受到損失。
二、屏蔽apache版本等敏感信息
1)我們?cè)赼pache主配置文件中,找到包含的行,并解開注釋
[root@c64-web /]# grep ; /usr/local/apache/conf/
#Include conf/extra/
[root@c64-web /]# sed -i 's##Include conf/extra/; /usr/local/apache/conf/
注意:編譯安裝的情況下,只有此行解開注釋了,后面的修改才能生效。
2)打開文件,修改如下兩個(gè)地方
[root@sunsky /]# grep Server conf/extra/|grep -v #
ServerTokens full
ServerSignature Off
修改為
ServerTokens Prod
ServerSignature Off
經(jīng)過上面的修改,當(dāng)你在curl-Iwww.sunsky.pw的時(shí)候,還是會(huì)出現(xiàn)下面的信息
Server: Apache
徹底讓版本等敏感信息消失
如果你需要徹底將版本之類的信息進(jìn)行改頭換面,你就需要在編譯之前做準(zhǔn)備或者進(jìn)行從新編譯了。在重新編譯時(shí),修改源碼包下include目錄下的ap_release.h文件
#define AP_SERVER_BASEVENDOR Apache Software Foundation #服務(wù)的供應(yīng)商名稱
#define AP_SERVER_BASEPROJECT Apache HTTP Server #服務(wù)的項(xiàng)目名稱
#define AP_SERVER_BASEPRODUCT Apache #服務(wù)的產(chǎn)品名
#define AP_SERVER_MAJORVERSION_NUMBER 2 #主要版本號(hào)
#define AP_SERVER_MINORVERSION_NUMBER 4 #小版本號(hào)
#define AP_SERVER_PATCHLEVEL_NUMBER 6 #補(bǔ)丁級(jí)別
#define AP_SERVER_DEVBUILD_BOOLEAN 0 #
上述列出的行,我已經(jīng)給出了注釋,大家可以修改成自己想要的,然后編譯安裝之后,再對(duì)文件進(jìn)行修改,對(duì)方就徹底不知道你的版本號(hào)了。
三、更改apache的默認(rèn)用戶
我們通過更改apache的默認(rèn)用戶,可以提升apache的安全性。這樣,即使apache服務(wù)被攻破,黑客拿到apache普通用戶也不會(huì)對(duì)系統(tǒng)和其他應(yīng)用造成破壞。這里創(chuàng)建的apache用戶,將用于對(duì)子進(jìn)程和線程的控制。
[root@c64-web /]# useradd -M -s /sbin/nologin apache 創(chuàng)建apache用戶
編輯apache配置文件,修改默認(rèn)的用戶。
[root@c64-web /]# vim /usr/local/apache/conf/
User apache #更改默認(rèn)的daemon用戶為apache用戶
Group apache #更改默認(rèn)的daemon用戶為apache用戶
四、apache目錄及文件權(quán)限設(shè)置
在生產(chǎn)環(huán)境的網(wǎng)站架構(gòu)中,我們應(yīng)把資源文件,例如用戶上傳的圖片及附件等和程序做好分離,最好是把上傳程序也分離開來。這樣才能更方便我們做好授權(quán),保證apache服務(wù)和整個(gè)服務(wù)器安全。
這里我們?cè)O(shè)置apache的網(wǎng)站目錄屬主和屬組是root,權(quán)限是755,文件的權(quán)限為644。
lrwxr-xr-x 1 root root 23 11月 5 02:04 apache -> /usr/local/apache-2.4.6
drwxr-xr-x 14 root root 4096 11月 5 12:37 apache-2.4.6
并且,在對(duì)日志的授權(quán)商,我們要將屬主和屬組都設(shè)置為root,權(quán)限設(shè)置為700。
drwx------ 2 root root 4096 11月 5 02:46 logs
由于apache日志的記錄是由apache的主進(jìn)程進(jìn)行操作的,而apache的主進(jìn)程又是root用戶啟動(dòng)的,所以這里設(shè)置700是不影響日志記錄了。這也是日志記錄的最安全的方法。
五、配置cronolog進(jìn)行日志輪詢
由于apache自帶的日志輪詢工具rotatelogs,據(jù)專家說在進(jìn)行日志切割時(shí)容易丟日志,因此我們通常使用cronolog進(jìn)行日志輪詢。
1、下載并安裝cronolog
[root@sunsky /]# cd /server/tools/
[root@sunsky tools]# wget
[root@sunsky tools]# tar zxf cronolog-1.6.2.tar.gz
[root@sunsky tools]# cd cronolog-1.6.2
[root@sunsky cronolog-1.6.2]# ./configure
[root@sunsky cronolog-1.6.2]# makemake install
2、配置apache使用cronolog
由于實(shí)驗(yàn)用的apache開啟了虛擬主機(jī)功能,所以以下范例配置都在虛擬主機(jī)中進(jìn)行。
[root@sunsky cronolog-1.6.2]# vim /usr/local/apache/
將配置文件中的CustomLog和ErrorLog替換為下面的(由于我們要對(duì)多站點(diǎn),所以這里要替換兩個(gè)虛擬主機(jī)的,并且將日志存放名字做有效的區(qū)分才好)
CustomLog |/usr/local/sbin/cronolog /app/logs/sunsky_access_%Y%m%d.log combined
ErrorLog |/usr/local/sbin/cronolog /app/logs/sunsky_error_%Y%m%d.log
更多日志格式參考:
按天輪詢(生產(chǎn)環(huán)境常見用法,推薦使用):
評(píng)論