httpd-2.4特性

    (1) MPM支持运行DOS机制

    (2) 支持event MPM

    (3) 支持异步读写

    (4) 支持每模块及每个目录分别使用各自的日志级别

    (5)  每请求配置;<if>

    (6) 增强版的表达式分析器(正则表达式)

    (7) 支持毫秒级的keepalive timeout

    (8) 基于FQDN的虚拟主机不在需要Name Virtual Host指令

    (9) 支持用户自定义变量

增加了新模块

(1)mod_proxy_fcgi   fast cgi

(2)mod_ratelimit    速率限制

(3)mod_remoteip    限定远程客户端IP

修改了一些配置机制

    不再支持使用order  ,deny,allow 来做基于IP的访问控制

httpd 依赖于apr   apr-util   apr-icon(不是必须的)

apr:Apache  portable runtime     Apache可移植运行环境

apr需要1.4以上的版本,所以apr  apr-util两个软件需要编译安装

注意:如果已经安装老的httpd,要停掉此服务并开机不启动

httpd编译前的准备工作:

一般编译安装时需要这几个包组: “development tools” “server plantform development”

安装顺序:apr --> apr-util --> httpd2.4

安装apr,apr-util(需要  --with-apr=新版apr安装路径);编译之前需要安装pcre-devel解决依赖关系

 安装apr、apr-util  钱可以查看下安装方法   #less  README 

apr可以安装在/usr/local/apr

    ./configure  --prefix=/usr/local/apr

    make && make install

apr-util可以安装在/usr/local/apr-util

    ./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr

    make && make install


编译安装httpd2.4

安装时可能会有关于pcre的报错,所以需要提前安装下列软件

  yum  install pcre-devel  zlib-devel  openssl-devel(可不安装)

1、httpd编译安装的常用选项:

./configure  --prefix=/usr/local/apache  --sysconfdir=/etc/httpd24  --enable-so  --enable-ssl --enable-cgi --enable-rewrite  --with-zlib  --with-pcre  --with-apr=/usr/local/apr  --with-apr-util=/usr/local/apr-util  --enable-module=most  --enable-mpms-shared=all  --with-mpm=prefork




prefix    程序包的安装路径

sysconfdir    配置文件的路径

enable-so    启用DSO机制,模块动态加载

enable-ssl    启用SSL功能

enable-cgi    支持cgi模式

enable-rewrite    支持URL重写

with-zlib    支持网络中压缩传输(所有with的功能,都需要安装对应包的devel包)

with-pcre    支持pcre功能

with-apr    rpm包在with的时候就不需要=/path,编译安装的则需要指明其路径

with-apr-util

enable-module    启用哪些模块

enable-mpms-shared    把所有支持的mpm功能做成共享模式

with-mpm    默认的MPM



2、make && make install



启动、关闭服务:

    apachectl   start|stop


注意:直接使用apachectl启动服务可能会启动老版本的,需要将新的路径放置在PATH变量的最前面

vim  /etc/profile.d/httpd.sh

    exprot  PATH=/usr/local/apache/bin:$PATH


#source  /etc/profile.d/httpd.sh

#hash -r

验证一下:which apachectl  看下新的apachectl是否在新的路径中


#hash -r  清除下所有的hash记录


目录解释:

/usr/local/apache/build/config.nice  中可以看到自己编译时用的那些选项

/usr/local/apache/cgi-bin/  以后再做介绍

/usr/local/apache/error/        错误页

/usr/local/apache/htdocs/     新版的默认主页位置

/usr/local/apache/icons/    图标文件

/usr/local/apache/include/     头文件,要导出被系统使用的话需要:ln  -sv  /usr/local/apache/include  /usr/include/httpd

/usr/local/apache/logs/    日志文件,可以修改配置文件修改路径

/usr/local/apache/man/    帮助文档、说明页;如果要找到这些man,要输出给MANPATH:

        vim /etc/man.config    增加一条MANPATH /usr/local/apache/man

/usr/local/apache/manual    手册页(html格式文档)如果想启用起来,则修改/etc/httpd24/httpd.conf  启用include /etc/httpd24/extra/httpd-manual.conf

/usr/local/apache/modules    共享模块



A、如何修改MPM:

修改配置文件:/etc/httpd24/httpd.conf,找到loadmodule  mpm_prefork_module  modules/mod_mpm_prefork.so,修改自己想要的mpm即可

#killall httpd  关闭所有httpd进程

#apachectl start   启动服务

没有指明以哪个用户身份启用其进程,默认使用daemon。如果想使用apache用户身份运行,则:

创建没有宿主目录的用户:

#groupadd -r apache

#useradd -r -g apache apache

修改配置文件中的user  group即可

B、修改main server的DocumentRoot。跟以往不同,修改了DocmentRoot=NEW PATH后还额外需要增加<Directory /NEW/PATH> ......  </Directory>

C、基于IP的访问控制法则

    允许所有主机访问:require  all  granted

    拒绝所有主机访问:require  all deny

    

    控制特定IP访问:

        require  ip   IPADDR  授权指定来源地址的主机访问

        require  not  ip  IPADDR  拒绝指定来源地址的主机访问

    IPADDR:可以写成

        ip  192.168.1.1     

        network/mask 192.168.1.0/255.255.255.0   

        network/length 192.168.1.0/24   

        net 192.168.1

控制特定主机(HOSTNAME)

    require host  HOSTNAME

    require no host HOSTNAME

        HOSTNAME:

            FQDN:特定主机

            DOMAIN:指定域内的所有主机

D、虚拟主机

    注释掉DocumentRoot

    启用Include  /etc/httpd24/extra/httpd-vhosts.conf

    基于IP  PORT和FQDN都支持

    基于FQDN的不在需要NameVirtualHost指令,如:

在配置文件中NameVirtualHst  *:80  或者别的(httpd2.2中有),现在到了httpd2.4版本后没有此指令

<VirtualHost  *:80>

    ServerAdmin   webadmin@a.com

    DocumentRoot "/vhost/a.com/htdocs"

    ServerName  www.a.com

    Alias  a.com

    Errorlog "logs/www.a.com-error.log"

    CustomLog "logs/www.a.com-access.log"  combined

    <Directory "/vhost/a.com/htdocs">          (没有对目录做授权,网页打开时会出现报错forbidden)

        options none

        AllowOverride none

        Require all granted

    </Directory>

</VirtualHost>

#killall -SIGHUP httpd  可以重读配置文件

E、SSL

    需要启用LoadModule  ssl_module

    启用配置文件Include  /etc/httpd24/extra/httpd-ssl.conf

    启用LoadModule  socache_shmcb_module  modules/mod_socache_shmcb.so(不启用会有依赖的报错)

F、服务脚本

#cd  /etc/rc.d/init.d/

#cp httpd  httpd24

修改httpd24中:

    apachectl=/usr/local/apache/bin/apachectl

    httpd=${HTTPD-/usr/local/apache/bin/httpd}

    pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}

    

chkconfig --add httpd24

chkconfig httpd24 on