httpd 与 apr
APR(Apache portable Run-time libraries,Apache可移植运行库) 主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。
随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。目前APR主要还是由Apache使用,由于APR的较好的移植性,因此一些需要进行移植的C程序也开始使用APR,开源项目比如用于服务器压力测试的Flood loader tester,该项目不仅仅适用于Apache,详情可查看这个连接 http://httpd.apache.org/test/flood。
如果对APR起到了什么作用还是不清楚的话,可以根据上面的图来理解。其实APR就是解决了应用与系统调用之间的衔接问题,避免了Linux 开发一套应用程序,windows 开发一套程序。现在,有APR,并开放了统一的接口,只要应用满足这个接口标准就可以了,至于如何去进行系统调用,则是由APR来实现。
根据我们上面的示意图,我们看出,httpd 2.2 的运行,是运行在 apr 1.3.9 的基础之上的。而 httd 2.4 则是运行在 apr 1.4+ 之上的。而centos 6 默认的版本是 apr-1.3.9,apr-util-1.3.9,所以我们在使用yum 安装httpd的时候,一般都是httd 2.2 的版本。 但是,如果因为实际生产,我们需要在CentOS 6 平台上安装httpd 2.4版本的话,应该如何做呢?其实也很简单,我们将apr 也重新编译安装一下,就可以解决这个问题。
下载解压
首先使用
rpm -qi httpd
查看一下我们的系统中是否已经安装了httpd应用程序,以及apr相关程序,如果已经安装过的话,最好将其删除掉。
到Apache 官方网站上下载最新版的httpd 2.4 程序,以及apr 和apr-util 最新版源码包 。 将源码包进行解压。
[root@localhostsrc]#pwd /usr/local/src [root@localhostsrc]#ls apr-1.6.2apr-1.6.2.tar.gzapr-util-1.6.0apr-util-1.6.0.tar.gzhttpd-2.4.27httpd-2.4.27.tar.bz2
安装开发包组和相关依赖包
在开始编译安装之前,需要先安装相关的开发包组以及其他的一些依赖包,这些包有下面的这些。
#安装开发包组 [root@localhostsrc]#yumgroupinstall"Developmenttools" #安装相应的devel包 [root@localhostsrc]#yuminstallopenssl-develpcre-develexpat-devel
编译apr 以及apr-util
因为httpd 是依赖与apr的,所以应该先编译apr 以及apr-util,然后再安装 httpd。
我们的源码文件存放的路径是/usr/local/src
,我们编译安装的路径是/app/apr
,/app/apr-util
,244);white-space:nowrap;">/app/httpd24.
#编译apr [root@localhostapr-1.6.2]#./configure--prefix=/app/apr #安装apr [root@localhostapr-1.6.2]#make-j2&&makeinstall #编译apr-util [root@localhostapr-util-1.6.0]#./configure--prefix=/app/apr-util--with-apr=/app/apr/ #安装apr-util [root@localhostapr-util-1.6.0]#make-j2&&makeinstall
创建apache 默认账号
首先给httpd 创建默认的系统用户。
#/app/website表示网站的默认路径,如果不指定的话,默认是/var/www/html #采用yum安装的方式,指定的路径就是默认路径 [root@localhost~]#useradd-r-d/app/website-s/sbin/nologinapache
编译安装 httpd
编译安装httpd ,可以自己指定需要开启的功能列表,然后指定程序安装的路径,我们这里指定的安装路径还是
/app/httpd24
#--prefix指定程序需要安装的路径 #--enable指定启用的模块 #--with-apr指定apr的路径 #--with-apr-util指定apr-util的路径 [root@localhosthttpd-2.4.27]#./configure--prefix=/app/httpd24--enable-so--enable-ssl--enable-cgi--enable-rewrite--with-zlib--with-pcre--with-apr=/app/apr/--with-apr-util=/app/apr-util/--enable-modules=most--enable-mpms-shared=all--with-mpm=prefork #安装httpd [root@localhosthttpd-2.4.27]#make-j2&&makeinstall
编辑/app/httpd24/conf/httpd.conf
修改默认用户,以及主页目录
将应用程序添加到环境变量中
#添加环境变量 [root@localhosthttpd-2.4.27]#echo'PATH=/app/httpd24/bin:$PATH'>/etc/profile.d/http24.sh #使环境变量生效 [root@localhosthttpd-2.4.27]#./etc/profile.d/http24.sh
编写服务的启用脚本
CentOS 6 中,服务器的启动脚本存放于
/etc/init.d/httpd
。当然我们自己编写服务的启动脚本有些困难,我们可以参考以前安装过的服务脚本略加修改。
将服务添加到开机启动,并开启服务
#将服务添加到服务列表 [root@localhostinit.d]#chkconfig--addhttpd24 #将服务设置为开机启动 [root@localhostinit.d]#chkconfighttpd24on #启动服务 [root@localhostinit.d]#servicehttpd24start
[root@localhostinit.d]#servicehttpd24start Startinghttpd:AH00526:Syntaxerroronline225of/app/httpd24/conf/httpd.conf: DocumentRoot'/app/website'isnotadirectory,orisnotreadable [Failed]
创建网站主页,并进行测试
#创建网站的根目录 [root@localhostinit.d]#mkdir/app/website #建立网站主页,用于测试路径 [root@localhostinit.d]#echo/app/website/index.html>/app/website/index.html
经过上述步骤,基本上就能够在CentOS 6 上成功的安装和运行HTTP 2.4了,如果还有什么疑问,可以留言一起套路。
个人博客地址:http://www.pojun.tech/欢迎访问