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 http://   方式来获取 软件包和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

    ServerAdmin [email protected]

    DocumentRoot "/data/www/blog"

    ServerName blog.etiantian.org

    ServerAlias etiantia.org

    ErrorLog "logs/blog-error_log"

    CustomLog "logs/blog-access_log" common


配置httpd.conf文件

增加站点目录权限,否则报403错误

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all


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文件

    ServerAdmin [email protected]

    DocumentRoot "/data/www/bbs"

    ServerName 192.168.3.201

    ServerAlias etiantia.org

    ErrorLog "logs/bbs-error_log"

    CustomLog "logs/bbs-access_log" common

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文件


    ServerAdmin [email protected]

    DocumentRoot "/data/www/bbs"

    ServerName 192.168.3.201

    ServerAlias etiantia.org

    ErrorLog "logs/bbs-error_log"

    CustomLog "logs/bbs-access_log" common

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中里面添加,则对应的虚拟主机生效


mod_deflate(压缩传输,apache调优之一)

在httpd_conf尾追加如下,则所有虚拟主机和htdocs均生效

   

        DeflateCompressionLevel 9

        SetOutputFiler DEFLATE

        AddOutputFilterByType DEFLATE text/html text/plain text/xml

        AddOutputFilterByType DEFLATE application/javascript

        AddOutputFilterByType DEFLATE text/css