在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>