Httpd2.4简介及CenOS6.6下编译安装

摘要:CentOS7的镜像中已经提供了httpd2.4的rpm包,httpd2.4相对于httpd2.2有较大的改进,在CentOS6下只能通过Apache官方网站提供的源码包编译安装。 httpd2.4新特性:   MPM支持运行DOS机制;   支持event MPM;   支持异步读写;   支持每模块及每个目录分别使用各自的日志级别;   每请求配置;   增强版的表达

CentOS7的镜像中已经提供了httpd2.4的rpm包,httpd2.4相对于httpd2.2有较大的改进,在CentOS6下只能通过Apache官方网站提供的源码包编译安装。

timg (26).jpg

httpd2.4新特性:

MPM支持运行DOS机制;

支持event MPM;

支持异步读写;

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

每请求配置;<If>

增强版的表达式分析器;

支持毫秒级的keepalive timeout;

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

支持用户自定义变量;

 

新模块:

mod_proxy_fcgi:与PHP结合的模块;

mod_ratelimit:限制下载速率的模块;

mod_remoteip:设定远程客户端IP;

 

修改的配置机制:不再支持使用order,allow,deny定义基于ip的访问控制,改为require;

 

编译安装Httpd2.4:

httpd2.4依赖于apr和apr-util,1.4以上版本,所以需要一同编译安装;

apr:ApachePortable Runtime,Apache可移植运行时;

官网:apr.apache.org

 

实验环境:

系统版本:CentOS 6.6x86_64;

httpd源码包:httpd-2.4.16.tar.bz2;

apr源码包:apr-1.5.2.tar.bz2;

apr-util源码包:apr-util-1.5.4.tar.bz2

 

实验前提:

关闭防火墙和SELinux;

安装编译环境;

#yumgroupinstall"ServerPlatformDevelopment""Developmenttools"

 

实验过程:

一、安装服务;

apr:

#tarxfapr-1.5.2.tar.bz2 #cdapr-1.5.2 #./configure--prefix=/usr/local/apr #make&&makeinstall

 

apr-util:

#tarxfapr-util-1.5.4.tar.bz2 #cdapr-util-1.5.4 #./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr/ --with-apr=/usr/local/apr/:指明apr安装位置; #make&&makeinstall

 

httpd:

#tarxfhttpd-2.4.16.tar.bz2 #cdhttpd-2.4.16 #./configure--prefix=/usr/local/apache--sysconfdir=/etc/httpd--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-modules=all--enable-mpms-shared=all--with-mpm=event #make&&makeinstall

 

httpd编译参数解释:

--prefix=/usr/local/apache:安装位置; --sysconfdir=/etc/httpd:配置文件位置; --enable-so:支持DSO动态装载模块; --enable-ssl:支持SSL/TLS,可实现https协议访问,需要安装openssl-devel; --enable-cgi:支持CGI脚本; --enable-rewrite:支持URL重写; --with-zlib:使用指定的zlib压缩库,不指定路径会自动寻找; --with-pcre:使用指定的pcre库,增强的正则表达式分析工具;不指定路径会自动寻找需已安装pcre-devel; --with-apr=/usr/local/apr:指定依赖apr程序安装位置; --with-apr-util=/usr/local/apr-util:指定依赖apr-util程序安装位置; --enable-modules=all:支持动态启用模块;all:所有,most:常用; --enable-mpms-shared=all:编译并共享模块; --with-mpm=event:默认启用模块;{prefork|worker|event}

 

二、参数配置;

接下来是安装完成之后的参数配置;

添加环境变量,并重读文件:

#vim/etc/profile.d/httpd.sh >exportPATH=/usr/local/apache/bin:$PATH #source/etc/profile.d/httpd.sh

 

导出头文件;

#ln-sv/usr/local/apache/include/usr/include/httpd

 

导出man手册;

#vim/etc/man.config >MANPATH/usr/local/apache/man

 

启动服务,查看监听端口;

#apachectlstart #ss�tnl

wKioL1XExnbDSx_qAAA-bjniqII052.jpg

 

访问测试;

wKiom1XExInDDgtoAABW4wNVlT0380.jpg

 

提供服务脚本:

可使用rpm包安装提供的脚本修改使用:

#vim/etc/rc.d/init.d/httpd >#!/bin/bash ># >#httpdStartupscriptfortheApacheHTTPServer ># >#chkconfig:-8515 >#description:ApacheisaWorldWideWebserver.Itisusedtoserve >#HTMLfilesandCGI. >#processname:httpd >#config:/etc/httpd/conf/httpd.conf >#config:/etc/sysconfig/httpd >#pidfile:/var/run/httpd.pid > >#Sourcefunctionlibrary. >./etc/rc.d/init.d/functions > >if[-f/etc/sysconfig/httpd];then >./etc/sysconfig/httpd >fi > >#StarthttpdintheClocalebydefault. >HTTPD_LANG=${HTTPD_LANG-"C"} > >#Thiswillpreventinitlogfromswallowingupapass-phrasepromptif >#mod_sslneedsapass-phrasefromtheuser. >INITLOG_ARGS="" > >#SetHTTPD=/usr/sbin/httpd.workerin/etc/sysconfig/httpdtouseaserver >#withthethread-based"worker"MPM;BEWARNEDthatsomemodulesmaynot >#workcorrectlywithathread-basedMPM;notablyPHPwillrefusetostart. > >#Pathtotheapachectlscript,serverbinary,andshort-formformessages. >apachectl=/usr/local/apache/bin/apachectl >httpd=${HTTPD-/usr/local/apache/bin/httpd} >prog=httpd >pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid} >lockfile=${LOCKFILE-/var/lock/subsys/httpd} >RETVAL=0 > >start(){ >echo-n$"Starting$prog:" >LANG=$HTTPD_LANGdaemon--pidfile=${pidfile}$httpd$OPTIONS >RETVAL=$? >echo >[$RETVAL=0]&&touch${lockfile} >return$RETVAL >} >stop(){ >echo-n$"Stopping$prog:" >killproc-p${pidfile}-d10$httpd >RETVAL=$? >echo >[$RETVAL=0]&&rm-f${lockfile}${pidfile} >} >reload(){ >echo-n$"Reloading$prog:" >if!LANG=$HTTPD_LANG$httpd$OPTIONS-t>&/dev/null;then >RETVAL=$? >echo$"notreloadingduetoconfigurationsyntaxerror" >failure$"notreloading$httpdduetoconfiguration>syntaxerror" >else >killproc-p${pidfile}$httpd-HUP >RETVAL=$? >fi >echo >} > >#Seehowwewerecalled. >case"$1"in >start) >start >;; >stop) >stop >;; >status) >status-p${pidfile}$httpd >RETVAL=$? >;; >restart) >stop >start >;; >condrestart) >if[-f${pidfile}];then >stop >start >fi >;; >reload) >reload >;; >graceful|help|configtest|fullstatus) >$apachectl$@ >RETVAL=$? >;; >*) >echo$"Usage:$prog{start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" >exit1 >esac > >exit$RETVAL

 

修改主配置文件指定pidfile;

#vim/etc/httpd/httpd.conf >PidFile"/var/run/httpd.pid"

 

脚本执行权限;

#chmod+x/etc/rc.d/init.d/httpd

 

添加服务,测试脚本;

#chkconfighttpd�add #chkconfighttpdon

#servicehttpdstop #servicehttpdstart #servicehttpdrestart #servicehttpdreload

wKiom1XExtiC2DljAADS_-o2Q9Y072.jpg

 

httpd2.4配置文件:

#/etc/httpd24:编译安装时指定的配置文件目录; #/etc/httpd24/httpd.conf:主配置文件 #/etc/httpd24/extra/httpd-default.conf:默认配置文件,keepalive、AccessFileName等设置; #/etc/httpd24/extra/httpd-userdir.conf:用户目录配置文件; #/etc/httpd24/extra/httpd-mpm.conf:MPM配置文件; #/etc/httpd24/extra/httpd-ssl.conf:SSL配置文件,为站点提供https协议; #/etc/httpd24/extra/httpd-vhosts.conf:虚拟主机配置文件; #/etc/httpd24/extra/httpd-info.conf:server-status页面配置文件;

 

至此httpd2.4的编译安装配置已完成,httpd2.4的配置与httpd2.2大致相同。

本文出自 “小马的学习记录” 博客,请务必保留此出处http://masachencer.blog.51cto.com/8683770/1682809