1、Apache的安装
上传httpd-2.2.17软件包并解压
[root@localhost ~]# ls
anaconda-ks.cfg httpd-2.2.17.tar.gz
[root@localhost ~]# tar zxvf httpd-2.2.17.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/httpd-2.2.17/
yum安装依赖包
[root@localhost ~]# yum -y install pcre-devel apr-devel libdb-devel cyrus-sasl-devel openldap-devel expat-devel apr-util-devel gcc zlib-devel zlib
编译安装开启相应模块
[root@localhost httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-cgi --enable-rewrite --enable-so --enable-deflate --enable-expires [root@localhost httpd-2.2.17]# make && make install
--enable-deflate:启用压缩模块;先压缩网页,在发送给客户端传输速度快
--enable-expires:缓存;有本地缓存使用缓存,没有缓存在从服务器拿数据
软连接
[root@localhost httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin [root@localhost httpd-2.2.17]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd [root@localhost httpd-2.2.17]# chmod a+x /etc/init.d/httpd [root@localhost httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf +97 #ServerName www.example.com:80 //删除此行#号 [root@localhost httpd-2.2.17]# /etc/init.d/httpd start [root@localhost httpd-2.2.17]# netstat -anptu | grep 80 tcp6 0 0 :::80 :::* LISTEN 51199/httpd
验证
2.Apache的三种工作模式
1、Prefork MPM
多进程
Prefork MPM:实现了一个非线程的、预派生的web服务器。它在Apache启动之初,就先预派生一些子进程,然后等待连接;可以减少频繁创建和销毁进程的开销,每个子进程只有一个线程,在一个时间点内,只能处理一个请求。
优点:这是一个成熟稳定,可以兼容新老模块,也不需要担心线程安全问题
缺点:但是一个进程相对占用资源,消耗大量内存,不擅长处理高并发的场景
2、Worker MPM
多进程+多线程
Worker MPM和prefork模式相比:worker使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。
优点:线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些
缺点:如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。由于用到多进程多线程,需要考虑到线程的安全了,在使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等待到超时才会被释放(该问题在prefork模式下也存在)
3、Event MPM
多进程+多线程+epoll
这是Apache最新的工作模式,它和worker模式很像,不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题,在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理
主要目录和文件
服务目录 /usr/local/httpd/
主配置文件 /usr/local/httpd/conf/httpd.conf
网页目录 /usr/local/httpd/htdocs/
服务脚本 /usr/local/httpd/bin/apachectl
执行程序 /usr/local/httpd/bin/httpd
访问日志 /usr/local/httpd/log/access_log
错误日志 /usr/local/httpd/log/error_log
修改apache模式
查看当前模式
[root@C7--01 ~]# /usr/local/httpd/bin/httpd -V |grep 'Server MPM'
Server MPM: Prefork
修改模式配置
重新编译时使用--with-mpm=worker 指定工作模式
[root@localhost httpd-2.2.17]# /etc/init.d/httpd stop [root@localhost httpd-2.2.17]# cd /usr/src/httpd-2.2.17/ [root@localhost httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi --with-mpm=worker [root@localhost httpd-2.2.17]# make clean && make && make install .... .. [root@localhost httpd-2.2.17]# /etc/init.d/httpd start [root@localhost httpd-2.2.17]# /usr/local/httpd/bin/httpd -V |grep 'Server MPM'
当从切换模式时,要重新编译安装
3.apache优化之保持连接、网页传输压缩、页面缓存时间
保持连接、长链接(keep-alive)
作用: HTTP协议是TCP的子协议, HTTP建立连接时需要先建立TCP连接,断开时也需要断开口TCP连接, TCP的建立和断开消耗的资源通过HITTP连接保持可以节约下来。对于HTTP/1.1,尽量地保持客户端的TCP连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭TCP连接时的资源消耗
keep-alive 是否打开保持连接功能。根据网站的并发请·求量决定是否打开,高并发时打开,并发量不高时可选择关闭
keep-alive timeout 一次TCP连接多次HTTP请求之间的最大间隔时间,两次HTTP请求超过此时间连接将会断开
maxkeep-alive requestes 一次TCP连接能够传输的最大HTTP请求数量
进入主配置文件
[root@localhost httpd-2.2.17]# /etc/init.d/httpd -M #查看模块
[root@localhost httpd-2.2.17]# vim /usr/local/httpd/conf/httpd.conf +397 397 Include conf/extra/httpd-default.conf #删除前面的#号 [root@localhost httpd-2.2.17]# /etc/init.d/httpd restart [root@localhost httpd-2.2.17]# vim /usr/local/httpd/conf/extra/httpd-default.conf #可以修改keep-alive配置
4.apache网页压缩
作用:配置Apache的网页压缩功能,是使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。通常在cpu有空闲,网站带宽占用高时,会启用
压缩的优势:
1.加快网页加载的速度,改善用户的浏览体验
2.降低网络传输带宽, 服务器节省流量
3.网页压缩有利于搜索引擎的抓取
Apache能实现网页压缩功能的模块有mod_gzip模块和mod_deflate模块
作用:配置Apache的网页压缩功能,是使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。通常在cpu有空闲,网站带宽占用高时,会启用
压缩的优势:
1.加快网页加载的速度,改善用户的浏览体验
2.降低网络传输带宽, 服务器节省流量
3.网页压缩有利于搜索引擎的抓取
Apache能实现网页压缩功能的模块有mod_gzip模块和mod_deflate模块
| mod_gzip | mod_deflate |
| Gzip算法,运作原理类似 | Gzip算法,运作原理类似 |
| 压缩速度略慢 | 压缩速度略快 |
| 压缩比略高 | 压缩比略低 |
| CPU占用率略高 | CPU占用率略低 |
| 低流量服务器 | 高浏览量服务器 |
配置项
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript 对什么格式的内容启用压缩
DeflateCompressionLevel 9 压缩级别为9,范围是1-9,数字大压缩率高
SetOutputFilter DEFLATE 启用deflate压缩方式
[root@localhost httpd-2.2.17]# echo 'AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript DeflateCompressionLevel 9 SetOutputFilter DEFLATE' >> /usr/local/httpd/conf/httpd.conf #把命令追加到文件最后 [root@localhost httpd-2.2.17]# /etc/init.d/httpd restart
5.页面缓存
作用:通过mod_expires模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求,减轻服务端工作压力(启用mod_expires模块后,会自动生成页面头部信息中的 Expires 标签和 CacheControl 标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的)
[root@localhost ~]# echo ‘
ExpiresActive On
ExpiresDefault "access plus 10 seconds"
’ >> /usr/local/httpd/conf/httpd.conf
ExpiresActive On #启用网页缓存
ExpiresDefault "access plus 10 seconds" #缓存默认时间是10s
[root@localhost ~]# /etc/init.d/httpd restart #重启服务
6.隐藏版本号
ServerTokens Prod #显示最少的信息,默认是Full显示完整信息
ServerSignature Off #生成页面的页脚
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf +55
55 ServerTokens prod
65 ServerSignature off
[root@localhost ~]# /etc/init.d/httpd restart
作用:通过mod_expires模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求,减轻服务端工作压力(启用mod_expires模块后,会自动生成页面头部信息中的 Expires 标签和 CacheControl 标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的)
ServerTokens Prod #显示最少的信息,默认是Full显示完整信息
ServerSignature Off #生成页面的页脚
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf +55 55 ServerTokens prod 65 ServerSignature off [root@localhost ~]# /etc/init.d/httpd restart



