23121321 发表于 2016-4-28 10:07:43

web-httpd2.4编译安装

                      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:Apacheportable runtime   Apache可移植运行环境
apr需要1.4以上的版本,所以aprapr-util两个软件需要编译安装
注意:如果已经安装老的httpd,要停掉此服务并开机不启动
httpd编译前的准备工作:
一般编译安装时需要这几个包组: “development tools” “server plantform development”
安装顺序:apr --> apr-util --> httpd2.4
安装apr,apr-util(需要--with-apr=新版apr安装路径);编译之前需要安装pcre-devel解决依赖关系
安装apr、apr-util钱可以查看下安装方法   #lessREADME
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的报错,所以需要提前安装下列软件
yuminstall pcre-develzlib-developenssl-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
    exprotPATH=/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,找到loadmodulempm_prefork_modulemodules/mod_mpm_prefork.so,修改自己想要的mpm即可
#killall httpd关闭所有httpd进程
#apachectl start   启动服务
没有指明以哪个用户身份启用其进程,默认使用daemon。如果想使用apache用户身份运行,则:
创建没有宿主目录的用户:
#groupadd -r apache
#useradd -r -g apache apache
修改配置文件中的usergroup即可
B、修改main server的DocumentRoot。跟以往不同,修改了DocmentRoot=NEW PATH后还额外需要增加<Directory /NEW/PATH> ......</Directory>
C、基于IP的访问控制法则
    允许所有主机访问:requireallgranted
    拒绝所有主机访问:requireall deny

    控制特定IP访问:
      requireip   IPADDR授权指定来源地址的主机访问
      requirenotipIPADDR拒绝指定来源地址的主机访问
    IPADDR:可以写成
      ip192.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 hostHOSTNAME
    require no host HOSTNAME
      HOSTNAME:
            FQDN:特定主机
            DOMAIN:指定域内的所有主机
D、虚拟主机
    注释掉DocumentRoot
    启用Include/etc/httpd24/extra/httpd-vhosts.conf
    基于IPPORT和FQDN都支持
    基于FQDN的不在需要NameVirtualHost指令,如:
在配置文件中NameVirtualHst*:80或者别的(httpd2.2中有),现在到了httpd2.4版本后没有此指令
<VirtualHost*:80>
    ServerAdmin   webadmin@a.com
    DocumentRoot "/vhost/a.com/htdocs"
    ServerNamewww.a.com
    Aliasa.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
    需要启用LoadModulessl_module
    启用配置文件Include/etc/httpd24/extra/httpd-ssl.conf
    启用LoadModulesocache_shmcb_modulemodules/mod_socache_shmcb.so(不启用会有依赖的报错)
F、服务脚本
#cd/etc/rc.d/init.d/
#cp httpdhttpd24
修改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

                   

页: [1]
查看完整版本: web-httpd2.4编译安装