Httpd-2.4的新特性


一、新特性

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

 Event MPM生产环境可用

 异步读写机制

 支持每模块及每目录的单独日志级别定义

 每请求相关的专用配置

 增强版的表达式分析式

 毫秒级持久连接时长定义

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

 新指令,AllowOverrideList

 支持用户自定义变量

 更低的内存消耗

二、Httpd 2.4新模块介绍

 Httpd 2.4新模块介绍

 mod_proxy_fcgi 支持PHP等动态语言

 mod_proxy_scgi SCGI Protocol,支持Python

 mod_remoteip 获取远端真实访问IP

httpd2.4新模块详细介绍官方文档

http://httpd.apache.org/docs/2.4/new_features_2_4.html

三、安装httpd2.4

    依赖于Apr-1.4以上版本,apr-until-1.4+ ,[Apr-icon]

           Apache portable runtime   apache可移植环境

       Centos6

默认:apr-1.39版,apr-until-1.39版,因此如果想在centos6使用httpd2.4需要编译安装。

开发环境包组:Development Tools,Server Platfrom Development

开发程序包:Pcre-devel

               Yum installpcre-devel

yum install openssl-devel

                   编译安装步骤:

        1、  apr-1.4版本以上的apr

        2、  apr-untl-1.4版本以上的apr- unti

        3、  httpd2.4

1、编译apr

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

Make && make install

2、编译apr-util

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

Make && make install

3、编译httpd

./configure --prefix=/usr/local/apache24 --enable-so--enable-ssl --enable-cgi  --enable-rewrit  --with-zlib--with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modeles=most --enable-mpms-shared=all --with-mpm=prefork

在这过程中可能会应为openssl报错 yum install  openssl-devel (笔者利用阿里源安装,本地原安装时缺少依赖包。)

make && make install

自带的服务控制脚本:apachectl

4、配置环境变量

 [root@Centos6_1 ~]# vim  /etc/profile.d/wanghttp.sh  (名称随意)

PATH=$PATH:/usr/local/wanghttp/bin

  [root@Centos6_1 ~]# source  /etc/profile.d/wanghttp.sh

5、库文件 添加动态链接库路径

[root@Centos6_1~]# vim /etc/ld.so.conf.d/wanghttp.conf

/usr/local/apache24/lib

[root@Centos6_1~]# ldconfig 

6、头文件

  [root@Centos6_1 ~]# ln -s /usr/local/apache24/include//usr/include/apache24

7、添加man帮助

[root@Centos6_1~]# vim /etc/man_db.conf

         MANPATH /usr/local/apache24/man

[root@Centos6_1~]# mandb   #重新生成mandb

8、生成服务

[root@Centos6_1 ~]# Vim /usr/lib/system/system/apachectl.service

[Unit]

Description=apachectl

After=multi-user.target

[Service]

Type=forking

ExecStart=/usr/local/apache24/bin/apachectlstart

ExecReload=/usr/local/apache24/bin/apachectlrestart

ExecStop=/usr/local/apache24/bin/apachectl  stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

Centos7

         Yum install httpd

配置文件

         /etc/httpd/httpd.conf

         /etc/httpd/conf.modules.d/*.conf

         /etc/http/conf.d/*.conf

配置应用

  1、  切换使用MPM

编辑配置文件/etc/httpd/conf.modules.d/00-mpm.conf,启用要启用的MPM想关的LoadModules指令即可。

  2、  基于IP地址的访问控制

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

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

  3、控制特定的ip访问

                                     Requireip IPADDR :授权指定来源的主机访问

                                     Requirenot ip IPADDR :拒绝

   4、控制特定的主机访问    

                                     Requirehost HOSTNAME :授权指定的主机访问

                                     Requirenot host HOSTNAME 拒绝

                                     HOSTANME:

                                               FQDN:特定主机

                                               Domin.tld:指定域名下的所有主机

                   示例:

                            <RequireALL>

                            Require all granted

                            Require not ip172.16.252.16

                            </RequireALL>

   四、虚拟主机的配置

                   基于FQDN的虚拟主机不在需要NameVirutalHost指令

                   Centos7虚拟主机需要单独授权

   <VirtualHost172.16.250.240:80>
       DocumentRoot /apps/www/html/
       ServerName www.linuxinfo.top
       ErrorLog logs/www.linuxinfo-error_log
       Customlog logs/www.linuxinfo-access_log common
    <Directory "/apps/www/html/">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    </VirtualHost>

注意:任意目录下的需要只有显示授权才能访问。