在 CentOS 7 下编译安装 Apache 2.4

关键字

CentOS, Apache, CentOS 7, Apache 2.4

背景概述

Apache 是全球最大的软件基金会的名字,拥有300多个开源项目。我们所说的 Apache Web 服务器通常指其中的 httpd 项目,该项目自 1.x 版本成为最通用的 Web 服务器,从 apache 更名为 Apache httpd,成熟稳定。

本文旨在帮助读者在 CentOS 7 下顺利安装 Apache httpd,本安装过程应已经过笔者反复测试,以确保成功。

官方提供 Windows 和 NetWare 版本的二进制文件,其余的系统只提供了源代码。本文采用源码编译方式安装,对 CentOS 7 下 Apache httpd 2.4.x 有效。截止本文发布,CentOS 版本是 1810,Apache httpd 版本是 2.4

注意:较常用的几个经典版本中,Apache httpd 2.2 版本是 2017 年 7 月发布的,生命周期于 2018-01-01 终止,而 1.3 版本已归档,所以建议使用 2.4 版。 ​

如果按此文安装时遇到任何问题,请留言或通过【桃花岛】官方联系我们。

软件依赖

  • CentOS 7
  • httpd 2.4.39 源码
  • gcc 包
  • Development Tools 包 group
  • apr-1.7.0 源码
  • expat-devel 包
  • apr-util-1.6.1 源码
  • pcre-8.43 源码

具体步骤

yum 安装 httpd

CentOS 7 自带 httpd 服务,如果你的机器上不包含 httpd 服务,你可使用 yum 安装

yum -y install httpd

目前用过 yum 安装的版本是 2.4.6,符合官方选择版本保守的风格,毕竟服务器软件,稳定压倒新特性。

运行

httpd -v

返回 2.4.6 版本

Server version: Apache/2.4.6 (CentOS)
Server built:   Apr 24 2019 13:45:48

如果你需要更新的版本,如 Apache/2.4.39 就需要自行编译了;编译的过程并不复杂,只是所依赖的包也需要编译安装,导致略显复杂。

所以,我们卸载 httpd 旧版本

yum -y remove httpd

再安装编译工具 ,顺便可以装上开发全家桶

yum -y install gcc gcc-c++
yum -y group install "Development Tools"

卸载待安装的包旧版本

yum -y remove apr apr-devel apr-util apr-util-devel 

安装 apr

cd /usr/local/src/
yum -y install wget
wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.7.0.tar.gz
tar xf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure --prefix=/usr/local/apr
make && make install

遇到 rm: cannot remove ‘libtoolT’: No such file or directory 请忽略

安装 apr-util

先安装依赖

yum -y install expat-devel

再获取编译

cd /usr/local/src/
wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
tar xf apr-util-1.6.1.tar.gz 
cd apr-util-1.6.1
./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config 
make && make install

安装 pcre(注意:不是pcre2)

cd /usr/local/src/
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.43.tar.gz
tar xf pcre-8.43.tar.gz 
cd pcre-8.43
./configure --prefix=/usr/local/pcre  
make && make install

编译 httpd

cd /usr/local/src/
wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.39.tar.gz
tar xf httpd-2.4.39.tar.gz
cd httpd-2.4.39
./configure --prefix=/usr/local/apache --enable-rewrite --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
make && make install

设置 systemctl 启动

此时,apapche httd 默认安装在 /usr/local/apache/bin/httpd,还无法使用 systemctl 管理,我们需要编辑 /etc/init.d/httpd 配置文件,保存,退出

#!/bin/bash
# chkconfig: 12345 80 90                                                                                                                                                                                                                 
function start_http()
{
    /usr/local/apache/bin/apachectl start
}
function stop_http()
{
    /usr/local/apache/bin/apachectl stop
}
case "$1" in
start)
    start_http
;;
stop)
    stop_http
;;
restart)
    stop_http
    start_http
;;
*)
    echo "Usage : start | stop | restart"
;;
esac

设置可执行权限,启动服务,并设置开机启动

chmod a+x /etc/init.d/httpd
systemctl daemon-reload
systemctl start httpd
chkconfig --add httpd

注意,放在 init.d 中启动项目不是 systemd 配置 httpd.service 方式,因此无法使用 systemctl enable httpd 设置,而是使用 chkconfig 旧方式。

安装验证

运行

/usr/local/apache/bin/httpd -v

返回如下即表示 Apache 2.4 已安装成功

Server version: Apache/2.4.39 (Unix)
Server built:   Jul 25 2019 22:16:03

问题汇总

问题:执行编译配置 apr 时提示:

rm: cannot remove ‘libtoolT’: No such file or directory

解决:请忽略。

如果要解决或想知道为什么,官方有此问题的讨论。值得一提的是 csdn 上修改 configure 文件,在 rm 后加入 -f 方法的方法,也不过是掩耳盗铃,忽略罢了。网上类似写法的文章还很多,简直是不可思议,难道大家都不知道 rm --help

-f, –force ignore nonexistent files and arguments, never prompt

问题:安装 apr-util 时提示:

fatal error: expat.h: No such file or directory。

解决:

yum -y install expat-devel

问题:

no acceptable C compiler found in $PATH

解决:

yum -y install gcc gcc-c++

相关文章

暂无

发表评论

电子邮件地址不会被公开。 必填项已用*标注