Apache2.4新特性:

        MPM支持运行DSO机制,以模块形式按需加载。

        模式event MPM已近生产可用。

        支持异步读写,可以极大地释放服务器并发能力。

        支持每个模块使用各自的日志级别。

        支持每请求<If>,判断摸个模块是否存在在加载。

        增强版的表达式分析器。

        支持毫秒级的keepalive timeout。

        基于FQDN的虚拟主机不再需要NameVirtualHost指令。

        支持用户自定义变量。


httpd2.4的安装:

        在安装httpd服务之前先要安装编译环境,yum  -y groupinstall "Development Tools" "Server Platform Development",安装好后再安装yum -y install pcre-devel。

        在Centos6上安装2.4版本和安装2.2的不同,因为Centos6上默认的就是2.2版本可以使用rpm包安装,但是要安装2.4版本的首先需要安装2.4所依赖的软件包apr-1.4+和apr-util-1.4+后才可以安装httpd2.4,但是Centos6上已近安装有apr-1.3.9和apr-util-1.3.9,而且其他包会依赖这两个老版本的软件包,所以要安装2.4版本只能编译安装,而不能使用rpm包安装 。


下载所需要的软件:

        wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/httpd/httpd-2.4.10.tar.gz

        wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.29.tar.gz

        wget http://oss.aliyuncs.com/aliyunecs/onekey/apache/apr-1.5.0.tar.gz

        wget http://oss.aliyuncs.com/aliyunecs/onekey/apache/apr-util-1.5.3.tar.gz

        前两个是httpd服务,都是2.4版本的任意一个即可,防止链接失效,后面两个apr和apr-util是httpd服务依赖的两个组件。


下载后解压:

        将三个压缩包都分别解压,解压后的目录分别是apr-xxx,apr-util-xxx,httpd-xxx,将apr-xxx整个目录都复制到httpd-xxx/srclib/apr中,将apr-util整个目录都复制到httpd-xxx/srclib/apr-util中。

        操作如下:

                cp -rf apr-1.5.0 httpd-2.4.10/srclib/apr

                cp -rf apr-util-1.5.3 httpd-2.4.10/srclib/apr-util

        这样做的目的是在编译httpd服务时可以将apr和apr-util一起编译,下面编译安装httpd2.4,进入到httpd2.4目录,目录有个configure是编译用的文件。具体如下:

        指定安装选项:

                --prefix=/usr/local/apache24        指定安装目录,卸载时删除这个目录就可以了

                --sysconf=/etc/httpd24                 指定配置文件目录

        全部选项:

        ./configure --prefix=/usr/local/apache24 --sysconf=/etc/httpd24 --with-mpm=prefork --enable-so --enable-rewrite --enable-mods-shared=all --enable-nonportable-atomics=yes --disable-dav --enable-deflate --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache --enable-ssl --with-included-apr --enable-modules=all  --enable-mods-shared=all

        安装:make && make install


启动服务:

        安装好后就可以启动httpd服务了,但是只能通过路径的方式,因为这是编译安装没有service脚本,例:/usr/local/apache24/bin/httpd -k start 这条服务就启动了。使用ss -tnl命令查看80端口是否启动,访问主机的IP地址就可以了。


常用选项:

        /usr/local/apache24/bin/httpd -t         检查配置文件语法是否有错

        /usr/local/apache24/bin/httpd -M       检查httpd服务开启的模块

        /usr/local/apache24/bin/apachectl      httpd服务自带的控制脚本

                apachectl {start|stop|restart|graceful|graceful-stop}

                如果想直接使用apachectl命令的话可以在/etc/profile.d/目录下新建一个脚本,在脚本里面将这个路径导出即可,export PATH=/usr/local/apache24/bin:$PATH 保存脚本后添加权限,并重载脚本 .  httpd.sh点、空格、脚本名这样就重载了。然后使用which apachectl查看这个目录是那个路径下的脚本。完成后就可以直接使用apachectl start命令了。/etc/profile.d/目录下的脚本在用户登陆系统时都会运行。


httpd选项:

        2.4版本和2.2版本有些命令有所改变。

httpd    [-k start|restart|graceful|graceful-stop|stop]

        configtest       检查设置文件中的语法是否正确。用于修改了配置文件后进行测试是否有误。

        fullstatus         显示服务器完整的状态信息。

        graceful          重新启动Apache服务器,但不会中断原有的连接。用于修改了配置文件后进行重新读取配置文件。

        help            显示帮助信息。

        restart         重新启动Apache服务器。 = httpd -k restart

        start            启动Apache服务器。

        status          显示服务器摘要的状态信息。

        stop            停止Apache服务器


相关配置:

        httpd-2.4的配置

        httpd-2.2的配置


自建服务控制脚本:

        将/etc/rc.d/init.d/httpd脚本复制一份命为httpd24,打开httpd24文件后修改下面的内容

apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}

修改成下面

apachectl=/usr/local/apache24/bin/apachectl
httpd=/usr/local/apache24/bin/httpd
prog=httpd
pidfile=${PIDFILE-/usr/local/apache24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}

        保存即可,然后用service httpd24 start命令测试是否可用。再用chkconfig --add  httpd24将脚本添加到系统服务,可使用chkconfig httpd24 on命令设置开机启动。