Apache優化
並發:同一時刻網站的訪問量
用戶瀏覽量UV(Unique Visitor):既獨立訪客,訪問您的網站的上網電腦數量(以cookie為依據)。(單用戶刷新算一次)
頁面瀏覽量PV(PageView):當天網站的訪問量(單用戶刷新算多次)。此指標衡量網站訪問量情況。
一、Apache調優
(1)調研(如apache需調研用戶訪問量、需要調整的內容、防盜鏈等)
(2)實施優化(優化未上線服務器,提升服務器性能和並發量)
(3)測試性能
ab <-nN總連接數> <-cN並發數> <網站(如:www.baidu.com/index.html)> //測試服務器訪問性能
選項:
-k:使用HTTP連接保持
-c:請求的進程數
-n:請求的線程數
(4)上線
準備域名、公網IP→服務器→部署服務(Apache) → 網頁文件
(5)DNAT(服務器內網IP:80映射公網IP:80)
www.hiahia.com:80 --> 服務器公網IP:80(23.12.45.11:80) --> 服務器內網IP:80(192.168.1.10:80)
二、Apache工作模式
1.perfork
(1)沒有線程概念,是多進程模型,一個進程處理一個連接,穩定、快;當連接數大時消耗大量內存
(2)優化
vim /usr/local/httpd/conf/httpd.conf
<ifModule mpm_prefork_module> ServerLimit 40 //最大開啟的進程數 StartServers 2 //服務器啟動時建立的子進程數 Maxclients 1000 //允許同時接入最大請求數量(最大線程數量) MinSpareThreads 5 //空閑進程最小數量 ThreadsPerChild 150 //進程建立的子進程常駐數 MaxRequestPerChild 1000 //每個子進程在存活期間允許的最大請求數量 </ifModule>
2.worker
(1)多進程、多線程,一個進程多個線程,一個線程處理一個連接;與perfork更省內存,與php等有兼容問題
(2)優化
vim /usr/local/httpd/conf/httpd.conf
<ifModule mpm_worker_module> ServerLimit 40 //最大開啟的進程數 ThreadLimit 200 //每個進程最大開啟的線程數 StartServers 2 //服務器啟動時建立的子進程數 Maxclients 1000 //允許同時接入最大請求數量(最大線程數量) MaxSpareThreads 100 //空閑線程最大數量 MinSpareThreads 5 //空閑線程最小數量 ThreadsPerChild 150 //每個子進程建立的常駐線程數 MaxRequestPerChild 1000 //每個子進程在存活期間允許的最大請求數量 </ifModule>
3.event
worker增強版,提供更好的並發負載能力,不能很好與https支持
vim /usr/local/httpd/conf/httpd.conf
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
4.查看當前工作模式:httpd -V
三、Apache其余優化方式
1.網頁壓縮
a.查詢是否安裝mod_deflate模塊
b.修改配置文件啟動模塊
c.測試
(1)判斷是否支持mod_deflate模塊
apachectl -t -D DUMP_MODULES //查看是否deflate_module
//也可以使用apachectl -l
查看安裝的所有模塊
(2)重新編譯安裝支持模塊
a.httpd-2.2.x
cd httpd-2.2.17/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate
make && make install
b.httpd-2.4.x
cd httpd-2.4.34/ //進入解壓目錄
yum -y install zlib-devel //yum安裝zlib-devel包
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre **--enable-deflate** //配置安裝壓縮模塊
make && make install //編譯並安裝
(3)修改配置文件啟動模塊支持
a.httpd-2.2.x
vim /usr/local/httpd/conf/httpd.conf
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript //指定需要壓縮的文件格式
DeflateCompressionLevel 9 //指定壓縮的等級
SetOutputFilter DEFLATE //對所有輸出啟用壓縮
b.httpd-2.4.x
vim /usr/local/httpd/conf/httpd.conf
105 LoadModule deflate_module modules/mod_deflate.so //加載deflate模塊
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript //指定需要壓縮的文件格式
DeflateCompressionLevel 9 //指定壓縮的等級
SetOutputFilter DEFLATE //對所有輸出啟用壓縮
</IfModule>
(4)驗證
/etc/init.d/httpd restart //重啟httpd服務
註:httpd1.x和2.x都使用gzip壓縮算法
2.網頁緩存
a.查詢是否安裝mod_expire模塊
b.修改配置文件啟動模塊
c.測試
(1)判斷是否支持mod_expire模塊
apachectl -t -D DUMP_MODULES //查看是否expire_module
(2)重新編譯安裝支持模塊
a.httpd-2.2.x
cd httpd-2.2.17/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate --enable-expires
make && make install
b.httpd-2.4.x
cd httpd-2.4.34/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre **--enable-expires** //配置添加緩存模塊
make && make install //編譯並安裝
(3)修改配置文件啟動模塊支持
a.httpd-2.2.x
vim /usr/local/httpd/conf/httpd.conf
<ifModule mod_expires.c>
ExpiresActive On //開啟expires模塊
ExpiresDefault "access plus 60 seconds" //緩存60秒
</ifModule>
b.httpd-2.4.x
vim /usr/local/httpd/conf/httpd.conf
111 LoadModule expires_module modules/mod_expires.so
<ifModule mod_expires.c>
ExpiresActive On //開啟expires模塊
ExpiresDefault "access plus 60 seconds" //緩存60秒
</ifModule>
(4)驗證
/etc/init.d/httpd restart //Expires:Sun, 04 Mar 2018 02:58:59 GMT
3.防盜鏈
a.查詢是否安裝mod_rewrite模塊
b.修改配置文件啟動模塊
c.測試
(1)判斷是否支持mod_rewrite模塊
apachectl -t -D DUMP_MODULES //查看是否rewrite_module
(2)修改配置文件啟動模塊支持
註:httpd2.2.x這裏與httpd2.4.x寫法一樣
vim /usr/local/httpd/conf/httpd.conf
httpd-2.4
159 LoadModule rewrite_module modules/mod_rewrite.so
226 <Directory "/usr/local/httpd/htdocs">下
252 RewriteEngine On //啟用rewrite地址重寫功能
253 RewriteCond %{HTTP_HOST} !^www.hiahia.com [NC] //定義信任的站點
254 RewriteRule .*\.(.gif|jpg|swf|mp4|mp3)$ http://aa.com/a.html[R,NC] //將未信任站臺,以gif、jpg等結尾訪問站點的全部重定向到http://aa.com/a.html
/etc/init.d/httpd restart //重啟服務
(3)測試
①編輯Windows的hosts文件(C:\Windows\System32\drivers\etc\hosts\)寫入下面兩條,便於客戶端訪問
192.168.10.200 www.hiahia.com //Apache服務器的IP與對應域名
192.168.10.100 www.hehe.com //要盜鏈的服務器
②將要瀏覽的文件放到Apache服務器的/usr/local/httpd/htdocs/下
③在要盜鏈的服務器,新建網頁文件,盜取地址
④客戶端訪問:
www.hiahia.com/文件 //允許訪問
www.hehe.com/hehe.html //不允許訪問,自動跳轉到aa.com/a.html
4.隱藏版本信息
vim /usr/local/httpd/conf/httpd.conf
ServerTokens Prod //只顯示Web服務器軟件
ServerSignature Off //關閉管理員信息
/etc/init.d/httpd restart //重啟服務
Apache優化