在企業中,部署Apache後只採用默認的配置參數,會引起網站不少問題,換言之默認配置是針對之前較低的
服務器配置的,之前的配置已經不適用當今互聯網時代,爲了適應企業需求,就須要考慮如何提高Apache的性
能與穩定性,這就是Apache優化的內容。javascript
配置網頁壓縮功能php
配置網頁緩存時間css
配置防盜鏈html
配置Apache的網頁壓縮功能,是使用gzip壓縮算法來對網頁內容進行壓縮後再傳輸到客戶端瀏覽器。java
下降了網絡傳輸的字節數,加快網頁加載的速度mysql
節省流量,改善用戶的瀏覽體驗c++
mod_gzip 模塊
mod_deflate 模塊算法
沒有內建網頁壓縮技術,但可以使用第三E方mod_gzip 模塊執行壓縮。sql
在開發的時候,內建了mod_deflate 這個模塊,取代mod_gzip。apache
二者均使用gzip壓縮算法,運做原理相似
mod_deflate 壓縮速度略快,而mod_gzip 的壓縮比略高
mod_gzip 對服務器CPU的佔用要高一些
(1)在宿主機將咱們所需的工具包共享出去。
(2)經過Samba服務將工具包掛載到Linux系統。
[root@localhost ~]# smbclient -L //192.168.100.50/ //查看共享 Enter SAMBA\root's password: //匿名共享,沒有密碼,直接回車 OS=[Windows 10 Enterprise LTSC 2019 17763] Server=[Windows 10 Enterprise LTSC 2019 6.3] Sharename Type Comment --------- ---- ------- IPC$ IPC 遠程 IPC share Disk tools Disk Users Disk Connection to 192.168.100.50 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND) NetBIOS over TCP disabled -- no workgroup available [root@localhost ~]# mkdir /mnt/tools //建立掛載目錄 [root@localhost ~]# mount.cifs //192.168.100.50/tools /mnt/tools/ //掛載 Password for root@//192.168.100.50/tools: [root@localhost ~]# cd /mnt/tools/ //進入掛載目錄 [root@localhost tools]# ls //查看 awstats-7.6.tar.gz extundelete-0.2.4.tar.bz2 forbid.png jdk-8u191-windows-x64.zip LAMP-C7 cronolog-1.6.2-14.el7.x86_64.rpm fiddler.exe intellijideahahau2018.rar john-1.8.0.tar.gz picture.jpg [root@localhost tools]#
(3)將源碼編譯安裝Apache服務的壓縮包解壓到「/opt/」目錄。
[root@localhost tools]# cd LAMP-C7/ //切換目錄 [root@localhost LAMP-C7]# ls apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt php-5.6.11.tar.bz2 apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz [root@localhost LAMP-C7]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/ //解壓 [root@localhost LAMP-C7]# tar zxvf apr-1.6.2.tar.gz -C /opt/ //解壓 [root@localhost LAMP-C7]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/ //解壓
(4)進入「/opt/」目錄,將兩個apr包移動到「httpd-2.4.29/srclib/」目錄,並重命名。
[root@localhost LAMP-C7]# cd /opt/ [root@localhost opt]# ls apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh [root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr [root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
(5)進入「httpd-2.4.29/」目錄,而後安裝編譯所需環境包。
[root@localhost opt]# ls httpd-2.4.29 rh [root@localhost opt]# cd httpd-2.4.29/ [root@localhost httpd-2.4.29]# ls ABOUT_APACHE ap.d CHANGES docs httpd.spec libhttpd.dep Makefile.win README srclib acinclude.m4 build CMakeLists.txt emacs-style include libhttpd.dsp modules README.cmake support Apache-apr2.dsw BuildAll.dsp config.layout httpd.dep INSTALL libhttpd.mak NOTICE README.platforms test Apache.dsw BuildBin.dsp configure httpd.dsp InstallBin.dsp LICENSE NWGNUmakefile ROADMAP VERSIONING apache_probes.d buildconf configure.in httpd.mak LAYOUT Makefile.in os server [root@localhost httpd-2.4.29]# [root@localhost httpd-2.4.29]# yum -y install \ > gcc \ > gcc-c++ \ > make \ > pcre \ > pcre-devel \ > expat-devel \ > zlib-devel \ > perl ......//省略安裝過程
(6)進行對Apache服務器的配置。
[root@localhost httpd-2.4.29]# ./configure \ > --prefix=/usr/local/httpd \ //安裝路徑 > --enable-deflate \ //啓用壓縮模塊支持 > --enable-expires \ //啓用緩存模塊支持 > --enable-so \ //啓用動態加載模塊支持 > --enable-rewrite \ //啓用網頁地址重寫功能 > --enable-charset-lite \ //啓用字符集支持 > --enable-cgi //啓用CGI腳本程序支持
(7)編譯安裝Apache服務。
[root@localhost httpd-2.4.29]# make && make install ......//省略編譯安裝過程 [root@localhost httpd-2.4.29]#
(8)對Apache服務配置文件進行修改。
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf //建立軟連接,方便使用 [root@localhost httpd-2.4.29]# [root@localhost httpd-2.4.29]# vim /etc/httpd.conf Listen 192.168.52.133:80 //開啓IPv4監聽 #Listen 80 //註釋IPv6監聽 ServerName www.abc.com:80 //設置域名 LoadModule headers_module modules/mod_headers.so //請求頭部,默認開啓 LoadModule deflate_module modules/mod_deflate.so //開啓壓縮模塊 LoadModule filter_module modules/mod_filter.so //過濾器,默認開啓 <IfModule mod_deflate.c> //尾行添加壓縮模塊信息 AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png //啓用壓縮的內容 DeflateCompressionLevel 9 //壓縮級別,9級 SetOutputFilter DEFLATE //啓用deflate模塊對本站點的輸出進行gzip壓縮 </IfModule>
(9)檢查配置文件格式,格式正確。
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/apachectl -t Syntax OK [root@localhost httpd-2.4.29]#
(10)將「/usr/local/httpd/bin/」目錄下的「apachectl」文件移動到「/etc/init.d/」目錄下,並在文件開頭添加chkconfig識別配置,而後將其添加爲標準的Linux系統服務
[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd //複製 [root@localhost httpd-2.4.29]# vim /etc/init.d/httpd //在配置文件添加兩行聲明 # chkconfig: 35 85 21 //服務識別參數,在級別三、5中啓動:啓動和關閉的順序分別爲8五、21 # description: Apache is a World Wide Web server //服務描述信息 [root@localhost httpd-2.4.29]# chkconfig --add httpd //將httpd服務添加爲系統服務 [root@localhost httpd-2.4.29]# [root@localhost httpd-2.4.29]# service httpd start //啓動Apache服務 [root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ //將Apache服務的命令文件,創建軟連接到易於系統識別的目錄 [root@localhost httpd-2.4.29]#
(11)檢查模塊是否安裝成功。
[root@localhost httpd-2.4.29]# apachectl -t -D DUMP_MODULES | grep "deflate" //驗證模塊 deflate_module (shared) [root@localhost httpd-2.4.29]# [root@localhost httpd-2.4.29]# systemctl stop firewalld.service //關閉防火牆 [root@localhost httpd-2.4.29]# setenforce 0 //關閉加強性安全功能 [root@localhost httpd-2.4.29]#
(12)將掛載目錄的「picture.jpg」圖片複製到Apache服務站點目錄「/usr/local/httpd/htdocs/」下,而後將圖片添加到首頁文件。
[root@localhost httpd-2.4.29]# cd /mnt/tools/ //切換目錄 [root@localhost tools]# ls awstats-7.6.tar.gz extundelete-0.2.4.tar.bz2 forbid.png jdk-8u191-windows-x64.zip LAMP-C7 cronolog-1.6.2-14.el7.x86_64.rpm fiddler.exe intellijideahahau2018.rar john-1.8.0.tar.gz picture.jpg [root@localhost tools]# cp picture.jpg /usr/local/httpd/htdocs/ //複製圖片 [root@localhost tools]# cd /usr/local/httpd/htdocs/ //切換目錄 [root@localhost htdocs]# ls //查看 index.html picture.jpg [root@localhost htdocs]# vim index.html //編輯首頁文件 <html> <body> <h1>It works!</h1> <img src="picture.jpg"> </body> </html>
(13)在win10主機安裝抓包工具fiddler。
(14)在win10主機訪問Apache網站。
(15)查看抓包內容,能夠看到Headers裏,圖片已經被gzip壓縮。
經過mod_expire模塊配置Apache,使網頁能在客戶端瀏覽器緩存一段時間,以免重複請求啓用mod_expire模塊後,會自動生成頁面頭部信息中的Expires標籤和Cache-Control標籤,從而下降客戶端的訪問頻率和次數,達到減小沒必要要的流量和增長訪問速度的目的。
(1)接着上面的實驗,緩存模塊在配置Apache服務時一塊兒添加了。因此直接對Apache配置文件進行修改。
[root@localhost htdocs]# vim /etc/httpd.conf LoadModule expires_module modules/mod_expires.so //開啓緩存模塊 <IfModule mod_expires.c> //尾行添加緩存模塊信息 ExpiresActive On //緩存開啓 ExpiresDefault "access plus 50 seconds" //緩存時間50秒 </IfModule>
(2)檢查Apache配置文件格式,格式正確。
[root@localhost htdocs]# apachectl -t Syntax OK [root@localhost htdocs]#
(3)重啓服務,查看監聽端口
[root@localhost htdocs]# service httpd stop //關閉服務 [root@localhost htdocs]# service httpd start //開啓服務 [root@localhost htdocs]# [root@localhost htdocs]# netstat -ntap | grep 80 //檢查監聽端口 tcp 0 0 192.168.52.133:80 0.0.0.0:* LISTEN 83296/httpd [root@localhost htdocs]#
(4)檢查緩存模塊是否安裝成功。
[root@localhost htdocs]# apachectl -t -D DUMP_MODULES | grep "expires" //驗證模塊 expires_module (shared) [root@localhost htdocs]#
(5)用win10主機再次訪問Apache站點。
(6)查看抓包,Headers裏能夠看到緩存時間爲50秒。
(7)咱們將Apache服務配置文件裏的緩存時間改成30秒,而後重啓服務。
[root@localhost htdocs]# vim /etc/httpd.conf <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 30 seconds" //將50改成30 </IfModule> [root@localhost htdocs]# service httpd stop //關閉服務 [root@localhost htdocs]# service httpd start //啓動服務 [root@localhost htdocs]#
(8)再次用win10主機訪問Apache服務站點。
(9)查看抓包,Headers裏能夠看到緩存時間已經從50秒變爲30秒了。