资讯专栏INFORMATION COLUMN

CentOS7编译安装Apache Httpd 2.4.20及rpm包制作小记

187J3X1 / 518人阅读

摘要:但是执行这个命令后我们发现,它会提示我们缺少相关依赖包。通常依赖包可以通过指令直接安装,下面是需要特殊安装的依赖包。安装完依赖包后,编译就是已经很轻松的事情了。相信很多同学都是在本地编译,然后上传到生产环境安装的吧,所以这一点需要提示一下。

httpd(Apache HTTP Server) 是世界上最知名、最流行的开源Web服务器之一,它十分快速、可靠,并且功能强大,拥有着强大的社区支持。CentOS7的软件源中自带的apache httpd版本过于老旧,如果想要使用新版本,则不得不自行编译。

今天我讲一下如何在CentOS7中以正确的姿势编译httpd并打包成rpm,按照教程打包失败可以到最后点网盘链接下载我编译好的rpm包。

源码包下载

下面是一些需要用到的源码包的下载地址,链接使用了bit的Apache镜像,需要使用其他镜像下载点这里。

apr-1.5.2

httpd-2.4.20

相关开发工具及依赖包安装 安装相关开发工具

要在CentOS下编译软件并制作rpm包,首先就需要安装相关的开发工具。编译软件可能需要用到gcc, g++等编译器,而制作rpm则需要安装rpmbuild,这些工具可以通过以下指令安装:

$ sudo yum groupinstall "Development Tools" -y
依赖包

打包rpm需要编写spec文件,但是这个文件在httpd的源码目录中已经给出了,所以就不需要我们自己编写。我们可以直接通过rpmbuild -tb httpd-2.4.20.tar.bz2这个指令来通过通过源码编译httpd并打包成httpd。

但是执行这个命令后我们发现,它会提示我们缺少相关依赖包。这些软件包被httpd所依赖,也就是说,httpd在编译时或者运行时需要使用这些软件或库。通常依赖包可以通过yum install指令直接安装,下面是需要特殊安装的依赖包。

1. distcache-devel

这个包有点古老,他在CentOS5之后似乎就被剔除出CentOS的源了,而CentOS5的老版本又不能在CentOS7上安装。但是我们可以通过fedora18提供的src.rpm包来安装这个包,fedora18的源已经没有了,但是我们可以从fedoraproject的archive源中找到它:下载地址

编译distcache:

$ rpmbuild --rebuild --clean distcache-1.4.5-23.src.rpm

可能会提示需要安装一些依赖包,直接使用yum指令安装即可,那些包在源中都有。安装完依赖后再执行上述指令即可开始编译。

编译完成后我们可以在~/rpmbuild/RPMS/目录下找到三个rpm包,分别是distcache-1.4.5-23.x86_64.rpm,distcache-debuginfo-1.4.5-23.x86_64.rpmdistcache-devel-1.4.5-23.x86_64.rpm可以通过如下指令对其进行安装:

$ sudo yum localinstall distcache-devel-1.4.5-23.x86_64.rpm

编译失败可以使用最后下载链接中的distcache-1.4.5.txz

2. apr

apr全称是Apache Portable Runtime,是httpd跨平台运行的基础。CentOS7源中提供的是1.4.x的版本,虽然httpd 2.4.20要求的apr版本是大于1.4.0即可,但是我发现在使用小于1.5.0版本的apr时,打包httpd.rpm时会提示以下错误:

 RPM build errors:
    File not found: rpmbuild/BUILDROOT/httpd-2.4.20-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so

所以我们需要手动编译安装apr的最新的1.5.2版本,编译过程与distcache相仿,需要的依赖包也可通过yum指令直接安装。编译指令:

$ rpmbuild -tb apr-1.5.2.tar.bz2

然后对依赖包进行安装:

$ sudo yum localinstall apr-1.5.2-1.x86_64.rpm apr-devel-1.5.2-1.x86_64.rpm

编译失败可以见最后下载链接中的apr-1.5.2.txz

编译httpd

除了上述两个特殊的依赖包外,httpd其他的依赖包都可以通过yum指令从源中直接安装。安装完依赖包后,编译httpd就是已经很轻松的事情了。

我们同样可以通过下面的指令编译httpd:

$ rpmbuild -tb httpd-2.4.20.tar.bz2

执行完指令后可以得到下列rpm包:

httpd-2.4.20-1.x86_64.rpm

httpd-debuginfo-2.4.20-1.x86_64.rpm

httpd-devel-2.4.20-1.x86_64.rpm

httpd-manual-2.4.20-1.x86_64.rpm

httpd-tools-2.4.20-1.x86_64.rpm

mod_authnz_ldap-2.4.20-1.x86_64.rpm

mod_lua-2.4.20-1.x86_64.rpm

mod_proxy_html-2.4.20-1.x86_64.rpm

mod_socache_dc-2.4.20-1.x86_64.rpm

mod_ssl-2.4.20-1.x86_64.rpm

然后我们就可以通过yum localinstall指令愉快的安装httpd最新版了。

有一点需要注意的是,如果要在一台新的机器上安装httpd,也需要安装apr的1.5.2版本,但是不需要安装相关的devel包。相信很多同学都是在本地编译rpm,然后上传到生产环境安装的吧,所以这一点需要提示一下。

参考资料

CentOS7.1 64bitにApache2.4.16をRPMからインストール

httpd-2.4.18 CentOS 7 RPM build file not found: mod_mpm_event.so

相关下载
文件名 SHA256 分享链接 提取码
apr-1.5.2.txz 49c40369f41e068fcb75a0bcb8d722b3b9e438fe619870bc418b9e7fba352b4c https://yunpan.cn/cSHIgwqA2pAqR 8fff
distcache-1.4.5.txz 4eb956ff51fa85e29322d66403e63f9ee890e3818aa098bec89c026f6fa500a9 https://yunpan.cn/cSHIkmAzVuU7E ab55
httpd-2.4.20.txz 2962da8ae640e0108b7b165d32aabec933c892e0554c245068bb5574be7b9948 https://yunpan.cn/cSHI8BQMiS5nw 7b18

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35764.html

相关文章

  • CentOS7编译安装Apache Httpd 2.4.20rpm制作小记

    摘要:但是执行这个命令后我们发现,它会提示我们缺少相关依赖包。通常依赖包可以通过指令直接安装,下面是需要特殊安装的依赖包。安装完依赖包后,编译就是已经很轻松的事情了。相信很多同学都是在本地编译,然后上传到生产环境安装的吧,所以这一点需要提示一下。 showImg(https://segmentfault.com/img/remote/1460000006768765); httpd(Apac...

    oogh 评论0 收藏0
  • centos7安装laravel 运行环境

    摘要:最近开始学习,最好的学习就是实践,学习同时把安装的环境搭配,跑了度娘都没找到我想要的文章。那我就简单的写写我的安装过程。使用命令查看可安装的包。 最近开始学习linux,最好的学习就是实践,学习linux 同时把安装LAMP的环境搭配,跑了度娘都没找到我想要的文章。那我就简单的写写我的安装过程。 网络设置 ping 114.114.114.144 网络连接失败,将虚拟机的网络适配器...

    CNZPH 评论0 收藏0

发表评论

0条评论

187J3X1

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<