apahce的特点
功能强大、配置简单、速度快、应用广泛、性能稳定可靠,并可做代理服务器或负载均衡来使用
应用场合。
使用Apache运行静态HTML网页、图片(处理静态小文件能力不及Nginx);
使用Apache结合PHP引擎运行PHP、Perl等程序,LAMP被称为经典组合;
使用APache结合Tomcat、Resin运行JSP,Java等程序,成为中小企业的首选;
使用Apache作代理、负载均衡、rewrite规则过滤等等。
Apache的安装:
版本:Apache 2.2.2
系统环境:CentOS 5.8
1.1、查看系统是否安装apache,若有则卸载:
查询:
rpm -aq httpd* 查看是否安装了Apache服务器
q 相当于query 查询
a相当于all
卸载:
rpm -e -nodeps http-2.2.2.........
e 等同于 -erase 表示移除
nodeps 英文解释为 dont do a depentdency check 不做软件间的依赖检查
注意,在CentOS6.5版本, 用yum remove apache* -y 来卸载
1.2、安装apache
(好习惯)创建目录:
mkdir /home/qingcong/tools
cd /home/qingcong/tools
(本人习惯将自己软件安装包均放在家目录里的tools下)
1.2.1、下载:
若联网,则用wget 方式来获取 软件包和KEY
若没有联网,可先在官网下载好apache2.2.3和KEY(验证文件),然后用rz -y 上传到tools目录
1.2.2、安装方式采用编译安装:
tar -zxvf httpd-2.2.22.tar 解压到当前目录
cd httpd-2.2.22
(编译)
./configure \
--prefix=/application/apache2.2.22 \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-modules=most \
--with-mpm=worker \
--enable-rewrite \
--enable-so
./configure 后的参数说明
--prefix=/application/apache2.2.22 表示指定安装的路径,若不指定,默认为[/usr/local/apache2]
--enable-deflate 提供对内容的压缩传输编码支持,一般html,js,css等内容的站点,使用此参数功能会大大提高传输速度,提升访问者访问体验。在生产环境中,这是Apache调优的一个重要选项之一。
--enable-expires 激活允许通过配置文件控制http的“Expires:”和"Cache-Control:"头内容,即对网站图片、js、css等内容,提供在客户端浏览器缓存的设置。这是Apache调优的一个重要选项之一
--enable-headers 提供允许对HTTP请求头的控制。
--with-mpm=worker 选择apache mpm的模式为worker模式,因worker模式原理是更多的使用线程来处理请求,所以可以处理更多的并发请求,而系统资源的开销小于基于进程的mpm prefork。如果不指定此参数,默认的模式是prefork进程模式。这是Apache调优的一个重要选项之一
--enable-rewrite 提供基于URL规则的重写功能。根据已知的URL,转换成其他想要的URL。如网页的伪静态功能就是这个模块实现的。这是Apache生产环境中比用的一个重要功能。
--enable-so 激活Apache服务的DSO(全程dynamic shared object,动态共享对象)支持,即以后可以以DSO的方式编译安装共享模块,这个模块本身不能以DSO方式编译。
在编译过程中,最后一行报错:
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
需要安装 devel
yum install devel 从yum源安装
也可以rz 上传,手动安装rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm 。
[root@oldboy]# make
#执行编译命令
[root@oldboy]# make install
#执行安装命令
[root@oldboy]# ln -s /application/apache2.2.22 /application/apache
#此条命令为创建软连接,意义十分重大。这可是生产环境的经验体现。
将apache安装路径通过软链接的方式更改为/application/apache方便人类使用,当apache软件升级到新版本后,删除原来的软链接重新建立新的到/application/apache的软链接就好,在别的程序中如果有引用apache路径的地方,不需要做任何更改
查看apache安装情况:
/application/apache/bin/apachectl -l
启动apache服务:
/application/apache/bin/apachectl start
检查启动情况:
本网段内电脑浏览器输入:http://192.168.31.140 显示It works就正常了(注意,网址是服务的IP地址,安装在虚拟机上则是虚拟机的IP地址)
如果不出来it works的内容,请依次检查如下:
1、iptables和SELinux是否关闭:
2、检查httpd端口80是否存在:
netstat -lnt|grep 80
3、检查httpd进程是否存在
ps -ef|grep httpd
4、在服务器本地wget http://192.168.31.140 测试
注意:如果2/3都不符合要求,那4就不用检查了,肯定不行,直接5。
服务器本地wget测试,直接跳过防火墙的干扰来检查http服务
5、检查apache错误日志,看看是否有异常:
tail -200 /application/apache/log/error_log
1.3部署一个简单的web站点
apache的默认站点目录是安装目录下的/application/apache/htdocs,可以从主配置文件/appilcation/apache/conf/httpd.conf中查到:grep -i documentroot httpd.conf
此时,如果要部署网站服务,只需要把开发好的程序全部放置到htdocs下面即可
配置Apache基于域名的虚拟主机
1.开启主配置文件中包含httpd.conf文件的配置
Include conf/extra/httpd-vhosts.conf (原是用#注释了,去除#即可)
2.配置httpd-vhosts.conf
vi /application/apache/conf/extra/httpd-vhost.conf
<VirtualHost *:80>
ServerAdmin 847907826@qq.com
DocumentRoot "/data/www/blog"
ServerName blog.etiantian.org
ServerAlias etiantia.org
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost>
配置httpd.conf文件
增加站点目录权限,否则报403错误
<Directory "/data/www/blog">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
3.检查语法错误
/application/apache/bin/apachectl -t
4.重启Apache服务:
/application/apache/bin/apachectl graceful
注意:此处用的是graceful,而不是restart参数,graceful表示优雅的重启,重启时让访问的用户无感知,即重启时不会强行终端用户的访问请求,而是处理完毕后再重新启动。graceful在生产环境中非常重。
重启完检查一下
配置Apache基于IP的虚拟主机(生产环境中极少使用)
1.增加虚拟IP
ifconfig eth0:201 192.168.3.201 up
(删除:ifconfig eth0:201 192.168.3.201 down)
2.修改extra里面httpd-vhost.conf文件
<VirtualHost 192.168.3.201:80>
ServerAdmin 847907826@qq.com
DocumentRoot "/data/www/bbs"
ServerName 192.168.3.201
ServerAlias etiantia.org
ErrorLog "logs/bbs-error_log"
CustomLog "logs/bbs-access_log" common
</VirtualHost>
3.检查语法错误
/application/apache/bin/apachectl -t
4.重启Apache服务:
/application/apache/bin/apachectl graceful
注意:此处用的是graceful,而不是restart参数,graceful表示优雅的重启,重启时让访问的用户无感知,即重启时不会强行终端用户的访问请求,而是处理完毕后再重新启动。graceful在生产环境中非常重。
重启完检查一下
配置Apache基于不同端口的虚拟主机
1.修改conf文件下httpd-conf文件,增加端口
Listen 8091
Listen 8092
2.修改extra里面httpd-vhost.conf文件
<VirtualHost *:8091>
ServerAdmin 847907826@qq.com
DocumentRoot "/data/www/bbs"
ServerName 192.168.3.201
ServerAlias etiantia.org
ErrorLog "logs/bbs-error_log"
CustomLog "logs/bbs-access_log" common
</VirtualHost>
3.检查语法错误
/application/apache/bin/apachectl -t
4.重启Apache服务:
/application/apache/bin/apachectl graceful
注意:此处用的是graceful,而不是restart参数,graceful表示优雅的重启,重启时让访问的用户无感知,即重启时不会强行终端用户的访问请求,而是处理完毕后再重新启动。graceful在生产环境中非常重。
重启完检查一下
expires_modules(客户端浏览器访问缓存,是apache调优项之一)
安装:
1.编译安装Apache时候添加 --enable-expires
2.DOS方式编译安装到Apache中去:
首先进入Apache解压后的文件:
[root@muban metadata]# cd /home/oldboy/tools/httpd-2.2.22/modules/metadata/
[root@muban metadata]# ll mod_expires.c
-rw-r--r--. 1 500 500 18285 Nov 12 2008 mod_expires.c
安装:
[root@muban metadata]#/application/apache/bin/apxs -c -i -a mod_exipres.so
检查:
[root@muban metadata]# ll /application/apache/modules/mod_expires.so
-rwxr-xr-x. 1 root root 37398 Apr 11 16:34 /application/apache/modules/mod_expires.so
应用:
在conf/httpd_conf文件尾追加如下内容,所有虚拟主机和htdocs均生效
ExpiresDefault "access plus 12 month"
ExpiresByType text/html "access plus 12 months"
ExpiresByType text/css "access plus 12 months"
ExpiresByType p_w_picpath/gif "access plus 12 months"
ExpiresByType p_w_picpath/jpeg "access plus 12 months"
ExpiresByType p_w_picpath/jpg "access plus 12 months"
ExpiresByType p_w_picpath/png "access plus 12 months"
ExpiresByType application/x-shockwave-flash "access plus 12 months"
ExpiresByType application/x-javascript "access plus 12 months"
ExpiresByType video/x-flv "access plus 12 months"
在conf/extra/httpd-vhosts.conf中尾部追加,则所有虚拟主机生效
在conf/extra/httpd-vhosts.conf中<VirtualHost>里面添加,则对应的虚拟主机生效
mod_deflate(压缩传输,apache调优之一)
在httpd_conf尾追加如下,则所有虚拟主机和htdocs均生效
<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
SetOutputFiler DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/css
</ifmodule>