再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

       首先centos 8.0怎么安装,这里就不叙述了,相信进来看这边文章的大佬,基本的系统安装肯定是没有问题的,并且centos 8.0可能是已经再使用中了,哈哈哈。

       其实编译安装httpd再centos的各个版本中都大同小异的,一般照猫画虎就可以了,闲话不多说,那咱们就开始进入正题吧。

已安装过httpd版本的,需要把它卸载,卸载之前,把httpd的服务脚本拷贝一份,要不,还得手动配置

cp /etc/init.d/httpd ./      (yum安装的httpd,httpd的服务脚本一般存放再/etc/init.d/httpd)

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

 

卸载之前,最好停止服务

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

注意:上面是之前我再centos 6上操作的步骤,所以命令使用会有差异,大家这里使用centos 8的命令就可以。

 

       首先需要再apache的官网下载httpd 2.4.46版本,其实百度搜索 “apache download” 第一个网页便是apache的官方下载页面,如下:(这里附上官方下载地址:http://httpd.apache.org/download.cgi

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

然后点击进去,主要看我红框标识的部分:

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

然后点击  source:  后面的链接就可以下载了,这里下载的是  httpd-2.4.46.tar.gz

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

下载完成后,不管你用什么方法上传到你的centos 8.0上就可以。

然后解压 tar -xvf httpd-2.4.46.tar.gz

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

解压完成后,需要安装httpd的依赖库程序和安装环境、编译工具

yum -y install pcre-devel openssl-devel perl gcc gcc-c++

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

httpd-2.4*程序版本需要依赖apr-1.4或以上版本(为各个平台提供兼容性) 以及  apr-util-1.4或以上版本

在centos上apr可能被其他非http的程序依赖,因此升级rpm不太现实,因此,建议使用源代码编译安装。

这里还需要到apache 依赖组件下载页面进行下载 (官方下载地址:http://apr.apache.org/download.cgi

分别下载 这里以 apr 1.7.0 以及 apr util 1.6.1版本 ,因为再2020-9-10,官方页面最新版本就是这2个。

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

首先编译1.4或以上版本的apr和apr-util(编译到指定位置,防止和原版本的apr冲突)

编译源码包之前,先进行解压,我就解压在root的家目录下(这里随便,看你心情,解压到那里都行)

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

先进入到apr目录

cd apr-1.7.0

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

先编译apr,编译到/usr/local/sbin/apr目录

./configure --prefix=/usr/local/sinb/apr && make && make install

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

在进入apr-util工具依赖包目录

编译到/usr/local/sbin/apr-util目录 因为apr-util是apr的依赖工具包,所以要关联apr (--with-apr=/usr/loacl/sbin/apr/

./configure --prefix=/usr/local/sbin/apr-util --with-apr=/usr/local/sbin/apr/ && make && make install

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

编译过程中,如果出现以下错误:

xml/apr_xml.c:35:10: 致命错误:expat.h:没有那个文件或目录
       #include <expat.h>
          ^~~~~~~~~
        那说明 缺少 expat库 

解决方法 :yum install -y expat-devel   再次编译即可

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

以上准备环境都做好后,最后进入到httpd-2.4.46目录

编译程序到/usr/local/sbin/apache路径,将配置文件放置到/etc/httpd2446目录下(指定目录不存在也可以,指定目录后,不存在默认会创建,这里可以随便命名,只要自己以后记得就可以!)

下面是一些编译httpd的一些功能组件介绍,根据自己使用情况编译某个功能就可以,但是一般建议都编译上。

--enable-ssl(支持加密会话,做https需要)

--enable-rewrite(支持网页重写功能,要支持网页重写必须支持网页正则表达式),

--with-pcre(正则表达式或者python正则表达式都是pcre的子集,统称为pcre,而pcre需要额外进行安装yum -y install pcre-devel)

--with-zlib(gzip压缩)

--with-apr=/usr/local/sbin/apr(调用apr)

--with-apr-util=/usr/local/sbin/apr-util/(调用apr-util)

--enable-modules=most(支持绝大部分的模块)

--enable-mpms-shared=all(支持所有的mpm模块)

--with-mpm=prefork(默认的模块为prefork)

使用以下命令编译

./configure --prefix=/usr/local/sbin/apache --sysconf=/etc/httpd2446 --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/sbin/apr --with-apr-util=/usr/local/sbin/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork && make && make install

小错误演示:再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

编译的时候,出现如下错误,说明你调用apr这个组件的目录写错误了,这里一定要注意,根据自己当时设定好的目录去编译。再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

 

ok,正式开始编译安装:

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

编译完成后:

注意:需要自行创建httpd的程序用户

useradd -r httpd

这里可以使用 cat /etc/passwd 看是否有apache这个用户,可以判断你之前是否有安装过apache

我这里之前安装过apache,所以用这个用户也可以,没有的话,需要创建

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本! 再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

 

因为是编译安装的,apache的指令只能在/usr/local/sbin/apache/bin/目录下使用,也就是编译安装的时候指定的目录下的bin目录下全部是Apache的指令文件,不是全局生效。

想让它全局生效,直接把apache的指令文件追加到PATH(命令搜索路径,指定系统中运行命令,是到哪些目录下去查找命令的可执行程序)后面就可以。

直接赋值或者在/etc/profile.d/目录下编写一个shell脚本,即可对所有用户进行设置,并且下次开机也生效

 /etc/profile.d/ 比 /etc/profile 好维护。不想要什么变量直接删除/etc/profile.d/下对应的.sh  shell脚本即可,不用像/etc/profile需要改动此文件

vim /etc/profile.d/httpd.sh      再/etc/profile.d 目录下创建一个httpd.sh脚本

export PATH=$PATH:/usr/local/sbin/apache/bin     (这里环境变量赋值,需要看你将apache安装到了那个目录下,然后这里就写那个目录就可以,注意区分大小写。)

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

source /etc/profile.d/httpd.sh 或者 . /etc/profile.d/httpd.sh都可以运行,运行后即刻生效。

注意:这里最好是将环境变量赋值到编译安装的apache的bin目录这里,负责可能会不生效!!!

 

apache的主配置文件在/etc/httpd24/httpd.conf目录

/etc/httpd24/目录下的资源解读

extra  额外辅助配置文件,没有被注配置文件include的,需要手动添加

original 防止主配置文件修改错误,无法恢复,可以从这里进行复制,在进行修改

mine.types  支持哪些流媒体格式

         这下面繁琐的流程,其实是再配置httpd的启动,停止、重启服务的脚本,再之前的centos6和7以及httpd 2.4版本,是需要操作这么多繁琐流程的。

是不是太麻烦了,httpd 2.4.46版本无需这么多设置,直接将这个服务脚本拷贝到/etc/init.d/目录下就可以

cp /usr/local/sbin/apache/bin/apachectl /etc/init.d/httpd

脚本启停文件需自己编写,可从httpd服务指令文件拷贝进行自定义修改即可

cp /usr/local/sbin/apache/bin/apachectl /etc/init.d/httpd

vim /etc/init.d/httpd

如果之前有安装过,并已经拷贝了一份httpd服务脚本的,就直接拿去编辑就可以,可以根据情况自行修改

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或**一个服务,它只是简单的改变了符号连接。

       启动级别,这里我就修改为35

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

apachectl和httpd的位置要更改为编译后的位置   (服务脚本里有的话,直接修改,没有自己添加

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

如果已经有一个大写的HTTPD参数了,可以增加一个小写的httpd

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

更改完后,可以使用bash -n 去检查修改后的脚本文件是否有语法错误

       把刚刚修改过的脚本文件移动到/etc/init.d/目录下,重启服务就可以了

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

 

注意:还需要启用deflate和rewrite模块

       vim /etc/httpd2446/httpd.conf   (刚刚再编译httpf的时候,将配置文件指定目录)

 再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

最后使用apachectl start启动服务。

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!

再linux centos8.0系统上编译httpd(apache) 2.4.46 最新版本!