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