在CentOS7上安裝Apache

官方參考資料

官方網站 產品文檔 HTTPS Gzip

執行安裝操作

            yum -y install libmcrypt libmcrypt-devel mcrypt mhash
yum -y install httpd
        

修改配置文件

安裝完成後,我們需要對配置文件進行一些修改。具體修改的內容通常包含:綁定的IP和端口、gzip壓縮傳輸、連接並發數、SSL。下面我們逐個進行講解。

修改綁定的IP和端口

Apache監聽的IP和端口默認是0.0.0.0:80。如果我們需要修改監聽的IP和端口可以直接修改。如果我們需要綁定多個端口,我們也可以添加。下面的示例中,我們綁定80和443端口。 443端口為HTTPS默認的端口號。

            Listen 80
Listen 443 https
        

開啟gzip傳輸

由於我們計算機CPU性能都比較高,通常瓶頸會出現在網絡帶寬上,所以我們可以選擇開啟gzip壓縮傳輸。壓縮等級有9個級別,我們可以根據自己服務器的性能進行選擇,找到一個最合適的等級。下面的示例中我們設置為等級1。壓縮的文件類型為:html、xml、php、css、js,壓縮文件類型我們也可以根據需要進行添加。

            <IfModule mod_deflate.c>
    DeflateCompressionLevel 1
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
    AddOutputFilter DEFLATE js css
</IfModule>
        

設置KeepAlive

KeepAlive的作用是讓客戶端和服務器保持一段時間連接。我們打開一個網頁的時候通常需要加載主要內容、js、css、圖片,由於每個資源都需要單獨發起一次HTTP請求,所以我們開啟了KeepAlive可以減少每次請求建立TCP/IP鏈接的時間。但是KeepAlive也有弊端,它會導致服務器的IO資源被佔用,所以我們需要根據實際情況選擇是否開啟KeepAlive。如果開啟了KeepAlive我們也需要為它設置一個合理的超時時間,避免服務器IO被長時間佔用。以下示例中包含了KeepAlive的幾個主要設置。

            KeepAlive On
MaxKeepAliveRequests 400
KeepAliveTimeout 5
        

配置並發數

對並發數進行合理的配置可以使服務器的吞吐能力得到大大的提升。通常我們的Apache是​​在mpm_prefork模式下工作的。我們需要對幾個關鍵參數進行合理配置。我們需要注意的是最大連接數不宜過小,過小會導致並發高的時候大量用戶請求被拒絕。我們設置的合理值要參考服務器的CPU和內存,只要資源充足我們應該盡可能設置大一些,但是如果我們設置過大,導致服務器資源耗盡,也會導致Apache崩潰。

            <IfModule mpm_prefork_module>
    StartServers         10
    MinSpareServers      25
    MaxSpareServers      50
    ServerLimit          1500
    MaxClients           1000
    MaxRequestsPerChild  3000
</IfModule>
        

配置SSL

現在大部分網站都是啟用了SSL來支持HTTPS的安全連接。 HTTPS的優勢在於傳輸過程中的內容是經過加密的,所以無需擔心被他人截獲導致信息洩露。開啟SSL之前我們必須先去申請證書,當我們得到證書後,參考下面的配置完成對SSL的設置。

            <VirtualHost *:443>
    ServerAdmin www.test.com
    ServerName www.testl.com
    DocumentRoot  /var/www/test
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    SSLCertificateFile /etc/httpd/conf/cert/public.crt
    SSLCertificateKeyFile /etc/httpd/conf/cert/1533528967430.key
    SSLCertificateChainFile /etc/httpd/conf/cert/chain.crt
    AllowEncodedSlashes on
    <Directory "/var/www/test.com">
         Options FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
    </Directory>
</VirtualHost>