CentOS 6编译配置httpd2.4的N种方法

前言

  我们使用Linux的过程中,一定会用到httpd这个服务,在CentOS7上,默认安装的httpd就是2.4版本,大家都知道,2.4版本相对之前的版本已经做了改进,用起来更加方便,但是我们的CentOS6上,默认安装的版本是2.2,那么,如果我们想要在CentOS6上安装httpd2.4版本的话,我们要如何做呢?

  本文中,小编会给大家介绍两种方法,来实现在CentOS6上编译安装httpd2.4版本。

 

方法一 分别编译法

 

1、下载源码并解压缩

[root@centos6 temp]# lltotal 8004
-rw-r--r-- 1 rootroot 1071074 Sep 29 12:27apr-1.6.2.tar.gz-rw-r--r-- 1 rootroot  565507 Sep 29 12:27apr-util-1.6.0.tar.gz-rw-r--r-- 1 rootroot 6553163 Oct 15 12:35httpd-2.4.28.tar.bz2

  接下来就是解压缩:

tarxvfhttpd-2.4.28.tar.bz2tarxvfapr-util-1.6.0.tar.gztarxvfapr-1.6.2.tar.gz

  解压缩以后,我们照例查看一下:

[root@centos6 temp]# lsapr-1.6.2apr-1.6.2.tar.gzapr-util-1.6.0apr-util-1.6.0.tar.gzhttpd-2.4.28httpd-2.4.28.tar.bz2

  我们发现,现在已经有了三个文件夹,该步骤完成。

 

2、安装所依赖的包组

  在编译安装开始之前,我们要先把所依赖的包组安装上,不然在接下来的编译安装过程中会出错。
  安装命令如下:

yum groupinstall "development tools" -y
yum install pcre-devel -y
yum install openssl-devel  -y
yum install expat-devel -y

  安装成功后,我们就可以对apr的分别编译了。

 

3、编译安装apr-1.6.2

  我们对apr-1.6.2进行编译安装,首先要保证我们所有的操作都是在该文件夹内进行的!
  首先,我们进入目录

[root@centos6 temp]# cd apr-1.6.2/
[root@centos6 apr-1.6.2]# ls
apr-config.in     CMakeLists.txt  libapr.mak     poll
apr.dep           config.layout   libapr.rc      random
apr.dsp           configure       LICENSE        README
apr.dsw           configure.in    locks          README.cmake
apr.mak           docs            Makefile.in    shmem
apr.pc.in         dso             Makefile.win   strings
apr.spec          emacs-mode      memory         support
atomic            encoding        misc           tables
build             file_io         mmap           test
buildconf         helpers         network_io     threadproc
build.conf        include         NOTICE         time
build-outputs.mk  libapr.dep      NWGNUmakefile  tools
CHANGES           libapr.dsp      passwd         user

  然后我们对其进行编译安装即可:

[root@centos6 apr-1.6.2]# ./configure --prefix=/app/apr
[root@centos6 apr-1.6.2]# make && make install

  编译的命令很简单,只需要指定一个目录,要记住这个目录0.0,接下来我们还会用到。
  编译安装完成后,我们来查看一下/app目录,看是不是已经生成了apr这个文件夹:

[root@centos6 apr-1.6.2]# ls /app/
apr

  可以看到已经有了这个文件夹,所以这一步骤我们完成。

 

4、编译安装apr-util-1.6.0

  跟上一步骤很是相似,但是有一个需要注意的地方就是,编译apr-util-1.6.0的时候,需要依赖apr-1.6.2包,所以还要跟上apr-1.6.2的目录。下面我们就来说说具体操作。
  首先,我们还是也要进入该目录下:

[root@centos6 temp]# cdapr-util-1.6.0[root@centos6 apr-util-1.6.0]# lsaprutil.depconfigure.inMakefile.winaprutil.dspcryptomemcacheaprutil.dswdbdmiscaprutil.makdbmNOTICEapr-util.pc.indocsNWGNUmakefileapr-util.specencodingREADMEapu-config.inexport_vars.sh.inREADME.cmakebucketshooksREADME.FREETDSbuildincluderedisbuildconfldaprenames_pendingbuild.conflibaprutil.depstrmatchbuild-outputs.mklibaprutil.dsptestCHANGESlibaprutil.makuriCMakeLists.txtlibaprutil.rcxlateconfig.layoutLICENSExmlconfigureMakefile.in

  接着,我们就可以对它进行编译安装了,注意,编译时的代码与刚刚略有不同,需要加上apr-1.6.2的目录:

[root@centos6 apr-util-1.6.0]# ./configure --prefix=/app/apr-util --with-apr=/app/apr/
[root@centos6 apr-util-1.6.0]# make && make install

  编译的命令很简单,只需要指定一个目录,要记住这个目录0.0,接下来我们还会用到。
  编译安装完成后,我们来查看一下/app目录,看是不是已经生成了apr-util这个文件夹:

[root@centos6 apr-1.6.2]# ls /app/
apr  apr-util

  可以看到已经有了这个文件夹,所以这一步骤我们完成。

 

5、编译安装httpd-2.4

  同样的,首先我们要进入这个目录:  

[root@centos6 temp]# cd httpd-2.4.28/
[root@centos6 httpd-2.4.28]# ls
ABOUT_APACHE     docs            Makefile.win
acinclude.m4     emacs-style     modules
Apache-apr2.dsw  httpd.dep       NOTICE
Apache.dsw       httpd.dsp       NWGNUmakefile
apache_probes.d  httpd.mak       os
ap.d             httpd.spec      README
build            include         README.cmake
BuildAll.dsp     INSTALL         README.platforms
BuildBin.dsp     InstallBin.dsp  ROADMAP
buildconf        LAYOUT          server
CHANGES          libhttpd.dep    srclib
CMakeLists.txt   libhttpd.dsp    support
config.layout    libhttpd.mak    test
configure        LICENSE         VERSIONING
configure.in     Makefile.in

  接着,我们就进行编译安装,编译的命令有些长,大家写的时候要注意不要少写了东西,不然就会报错报错报错!或者就像小编这样,把代码分行写,但是一定要加\符号才可以诺。

[root@centos6 httpd-2.4.28]#./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
[root@centos6 httpd-2.4.28]# make && make install

  至此,编译安装的步骤全部结束。我们可以来测试了

 

6、测试并进行配置

  首先,我们先来查看一下,我们的80端口是否处于没有开启的状态:

[root@centos6 ~]# ss-tnlStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN     0      128                 :::22                 :::*     
LISTEN     0      128                  *:22                  *:*     
LISTEN     0      128          127.0.0.1:631                 *:*     
LISTEN     0      128                ::1:631                :::*     
LISTEN     0      100                ::1:25                 :::*     
LISTEN     0      100          127.0.0.1:25                  *:*

  可以看出我们的80端口并未开启,强烈建议大家一定要查看,如果我们之前的机器上装过httpd服务,就把他卸载,至少至少也要停止服务,保证我们的80端口是关闭的状态,不然我们新安装的2.4版本是启动不起来的!
  接着,我们进入/app/httpd24/bin/这个目录,把服务开启一下:

[root@localhost ~]# cd /app/httpd24/bin/
[root@localhost bin]# ./apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

  现在,我们再来查看一下端口开启情况:

[root@localhost bin]# ss-tnlStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN     0      128                 :::80                 :::*     
LISTEN     0      128                 :::22                 :::*     
LISTEN     0      128                  *:22                  *:*     
LISTEN     0      128          127.0.0.1:631                 *:*     
LISTEN     0      128                ::1:631                :::*     
LISTEN     0      100                ::1:25                 :::*     
LISTEN     0      100          127.0.0.1:25                  *:*

  可以看出,我们的80端口已经开启,接着我们就可以用其他的机器来测试一下了:
  我们在centos7上使用curl命令来测试:

[root@centos7 ~]# curl 192.168.191.128<html><body><h1>It works!</h1></body></html>

  测试成功。
  至此,我们的实验已经圆满完成,已经成功的在centos6上安装上了httpd2.4版本。

 

方法二 一次编译法

  在上一个实验中,我们使用分别编译的方法把httpd2.4版本安装到了centos6上,但是分别编译的方法还是略有麻烦,那有没有一次就可以完成编译的方法呢?小编很负责任的告诉你,当然是有的!接下来我们就来看一看如何才能一次编译安装所有的东西~

 

1、下载源码并上传至虚拟机

[root@centos6 temp]# lltotal 8004
-rw-r--r-- 1 rootroot 1071074 Sep 29 12:27apr-1.6.2.tar.gz-rw-r--r-- 1 rootroot  565507 Sep 29 12:27apr-util-1.6.0.tar.gz-rw-r--r-- 1 rootroot 6553163 Oct 15 12:35httpd-2.4.28.tar.bz2

  该步骤完成。

 

2、安装所依赖的包组

  在编译安装开始之前,我们要先把所依赖的包组安装上,不然在接下来的编译安装过程中会出错。
  安装命令如下:

yum groupinstall "development tools" -y
yum install pcre-devel -y
yum install openssl-devel  -y
yum install expat-devel -y

  安装成功后,我们就可以对apr的分别编译了。

 

3、对源码进行解压缩

  第一步中,我们已经把源码上传到了我们的虚拟机上,但是还没有进行任何操作,这一步骤中,我们就需要把源码进行解压缩,并放入指定的文件夹中,来创造一次编译安装的条件,具体操作如下:
  首先,对三个包分别进行解压:

tarxvfhttpd-2.4.28.tar.bz2tarxvfapr-util-1.6.0.tar.gztarxvfapr-1.6.2.tar.gz

  解压完成后,我们把xvf apr-1.6.2.tar.gzapr-util-1.6.0.tar.gz分别复制到httpd-2.4.28.tar.bz2这个目录下的指定文件夹中并改名字:

[root@centos6 temp]# cp -a apr-1.6.2 httpd-2.4.28/srclib/apr
[root@centos6 temp]# cp -a apr-util-1.6.0 httpd-2.4.28/srclib/apr-util
[root@centos6 temp]# ls httpd-2.4.28/srclib/
apr  apr-util  Makefile.in

  我们可以看出,在httpd-2.4.28/srclib/目录下已经有了aprapr-util这两个文件夹了。本步骤完成。

 

4、编译安装

  准备工作都做好了,接下来就是编译安装了。
  一样的,需要先进入到httpd-2.4.28/这个目录下。由于代码很长,希望大家仔细仔细再仔细,或者像小编一样分行写:

[root@centos6 temp]# cd httpd-2.4.28
[root@centos6 httpd-2.4.28]# ./configure --prefix=/app/httpd24 \--enable-so \--enable-ssl \--enable-cgi \--enable-rewrite \--with-zlib \--with-pcre \--with-included-apr \--enable-modules=most \--enable-mpms-shared=all \--with-mpm=prefork
[root@centos6 httpd-2.4.28]# make -j 4 && make install

  安装的make -j 4 && make install这一行代码意思是开启4个进程同时工作,进行安装,这样速度比较快一些。
  以上,编译安装完成,接着,我们可以进行测试,并进行一些配置的修改。

 

5、测试并进行配置

  首先,进入/app/httpd24这个文件夹,查看一下内容:

[root@centos6 httpd24]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules 

  上一个实验我们是进入bin/目录下,然后使用apachectl来启动我们的服务的,但是如果每次都这样启动服务,无疑很麻烦,因为要加上路径,所以我们干脆把这个路径设置到PATH变量里面,这样我们使用服务就会变得比较方便,具体操作如下:

[root@centos6 bin]# vim /etc/profile.d/httpd24.shPATH=/app/httpd24/bin:$PATH

  然后我们运行一下使它生效:

[root@centos6 bin]# . /etc/profile.d/httpd24.sh

  现在我们在任意页面都可以启动我们的服务。

[root@centos6 bin]# apachectl start

  我们现在可以在另一台机器上测试一下我们的服务:

[root@centos7 ~]# curl 192.168.191.128<html><body><h1>It works!</h1></body></html>

  我们的页面是保存在/app/httpd24/htdocs/这个文件夹里的,我们也可以根据自己的需要,把这个页面修改一下~:

[root@centos6 httpd24]# cd htdocs/
[root@centos6 htdocs]# ls
index.html
[root@centos6 htdocs]# vim index.html 
<html><body><h1>Welcome to keer'home!</h1></body></html>

  然后我们再去centos7上查看一下:

[root@centos7 ~]# curl 192.168.191.128 <html><body><h1>Welcome to keer'home!</h1></body></html>

  已经是我们修改过后的样子了。
  当然,我们还是希望能够写成服务脚本,这样的话,我们使用起来就更加便利,现在我们的服务已经启动起来了,我们可以用ps aux来查看一下:

[root@centos6 htdocs]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT STARTTIME COMMAND
root          10.00.0193481560 ?        Ss   00:220:01 /sbin/init
root          20.00.000 ?        S    00:220:00 [kthreadd]
……
daemon    352580.00.0764161436 ?        S    00:530:00 /app/httpd24/bin/httpd -kstart
daemon    352590.00.0764161436 ?        S    00:530:00 /app/httpd24/bin/httpd -kstart
daemon    352600.00.1764162104 ?        S    00:530:00 /app/httpd24/bin/httpd -kstart
daemon    352610.00.1764162084 ?        S    00:530:00 /app/httpd24/bin/httpd -kstart
daemon    352620.00.1764162084 ?        S    00:530:00 /app/httpd24/bin/httpd -kstart
daemon    352640.00.0764161440 ?        S    00:540:00 /app/httpd24/bin/httpd -kstart
root      3532613.00.01102601152 pts/0    R+   01:220:00 ps aux

  在这里我们又发现了一个问题,此时的httpd是以daemon的身份运行的,我们当然是希望它是由apache的身份来运行,所以我们可以来修改一下:
  我们先来查看一下apache这个用户是否存在:

[root@centos6 htdocs]# id apacheuid=48(apache) gid=48(apache) groups=48(apache)

  如果不存在的话,我们可以使用useradd -r apache来创建,因为apache是系统的服务用的账号,所以需要加上-r
  然后我们就可以来修改配置文件了,配置文件在/app/httpd24/conf/这个文件夹里,我们进去并把文件修改一下:

[root@centos6 ~]# cd /app/httpd24/conf/
[root@centos6 conf]# ls
extra  httpd.conf  magic  mime.types  original
[root@centos6 conf]# vim httpd.conf 

  打开这个文件以后,我们把:

User daemon
Group daemon

  改成这样:

User apache
Group apache

  这样就可以了,我们现在把服务停止,重新打开,然后再用ps aux来查看一下:

[root@centos6 conf]# apachectl stop
[root@centos6 conf]# apachectl start
[root@centos6 conf]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT STARTTIME COMMAND
root          10.00.0193481560 ?        Ss   00:220:01 /sbin/init
root          20.00.000 ?        S    00:220:00 [kthreadd]
……
apache    353520.00.0764161436 ?        S    01:330:00 /app/httpd24/bin/httpd -kstart
apache    353530.00.0764161436 ?        S    01:330:00 /app/httpd24/bin/httpd -kstart
apache    353540.00.0764161436 ?        S    01:330:00 /app/httpd24/bin/httpd -kstart
apache    353550.00.0764161436 ?        S    01:330:00 /app/httpd24/bin/httpd -kstart
apache    353560.00.0764161436 ?        S    01:330:00 /app/httpd24/bin/httpd -kstart
root      353573.00.01102601152 pts/0    R+   01:330:00 ps aux

  这样,我们的httpd就是以apache的身份来运行的了。
  当然,我们还可以直接做成服务,服务脚本也不需要我们自己写,直接把系统自带的httpd的服务脚本复制一份,修改一下就可以了,具体操作步骤如下:

[root@centos6 ~]# cd /etc/init.d
[root@centos6 init.d]# ls
abrt-ccpp         cpuspeed   htcacheclean  lvm2-monitor    ntpd          rdma         spice-vdagentd          winbind
abrtd             crond      httpd         mdmonitor       ntpdate       restorecond  sshd                    wpa_supplicant
abrt-oops         cups       ip6tables     messagebus      portreserve   rngd         svnserve
acpid             dnsmasq    iptables      netconsole      postfix       rsyslog      sysstat
atd               firstboot  irqbalance    netfs           pppoe-server  sandbox      udev-post
auditd            functions  kdump         network         psacct        saslauthd    vmware-tools
blk-availability  haldaemon  killall       NetworkManager  quota_nld     single       vmware-tools-thinprint
bluetooth         halt       lvm2-lvmetad  nfs-rdma        rdisc         smartd       wdaemon
[root@centos6 init.d]# cp httpd httpd24
[root@centos6 init.d]# vim httpd24 

  文件里上面的内容不需要改动,我们只需要修改一下路径就可以了,也就是把

# Path to the apachectl script, server binary, and short-form for messages.apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}prog=httpd
pidfile=${PIDFILE-/var/run/httpd/httpd.pid}lockfile=${LOCKFILE-/var/lock/subsys/httpd}RETVAL=0STOP_TIMEOUT=${STOP_TIMEOUT-10}

  修改为:

# Path to the apachectl script, server binary, and short-form for messages.apachectl=/app/httpd24/bin/apachectl
httpd=${HTTPD-/app/httpd24/bin/httpd}prog=httpd
pidfile=${PIDFILE-/app/httpd24/logs/httpd.pid}lockfile=${LOCKFILE-/var/lock/subsys/httpd24}RETVAL=0STOP_TIMEOUT=${STOP_TIMEOUT-10}

  然后保存退出就可以了。
  接下来,就可以把这个服务添加到服务列表里了:

[root@centos6 init.d]# chkconfig --add httpd24
[root@centos6 init.d]# chkconfig httpd24 on
[root@centos6 init.d]# chkconfig --list httpd24
httpd24         0:off1:off2:on3:on4:on5:on6:off

  这样,我们的httpd2.4版本就可以通过service来控制了。
  至此,我们的服务的主要功能就实现了。
  我们的实验圆满完成。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/217953.html<

(0)
管理的头像管理
上一篇2025-04-13 10:25
下一篇 2025-04-13 10:27

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注