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修改默认用户,以及主页目录

对httpd的配置文件进行修改,根据我们自己创建的用户,以及自己指定的网站目录,对配置文件进行相应的修改。

apache-user

Apache-sebsite

将应用程序添加到环境变量中

#添加环境变量
[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。当然我们自己编写服务的启动脚本有些困难,我们可以参考以前安装过的服务脚本略加修改。

将这个文件/etc/init.d/httpd改名为/etc/init.d/httpd24,然后修改如下内容

编写启动脚本

将服务添加到开机启动,并开启服务

#将服务添加到服务列表
[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/欢迎访问

在CentOS6上编译安装http2.4的更多相关文章

  1. HTML5 播放 RTSP 视频的实例代码

    目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。本文重点给大家介绍HTML5 播放 RTSP 视频的实例代码,需要的朋友参考下吧

  2. 利用Node实现HTML5离线存储的方法

    这篇文章主要介绍了利用Node实现HTML5离线存储的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. 详解如何通过H5(浏览器/WebView/其他)唤起本地app

    这篇文章主要介绍了详解如何通过H5(浏览器/WebView/其他)唤起本地app的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. H5混合开发app如何升级的方法

    本篇文章主要介绍了H5混合开发app如何升级的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. AmazeUI 折叠面板的实现代码

    这篇文章主要介绍了AmazeUI 折叠面板的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码

    这篇文章主要介绍了HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  7. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  8. html5唤起app的方法

    这篇文章主要介绍了html5唤起app的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. HTML5拍照和摄像机功能实战详解

    这篇文章主要介绍了HTML5拍照和摄像机功能实战详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部