httpd-2.4编译安装详解

1、前言

    在CentOS 6上利用yum安装的httpd为2.2版本,而CentOS 7本身就支持httpd-2.4,所以这里以CentOS 6为例.

2、解决依赖关系

    由于httpd服务依赖于apr,apr-util包。CentOS 6上的这两个包的版本是1.3.9版本的,而httpd-2.4所依赖的这两个包的版本必须是1.4及以上的,所以必须下载、编译安装这两个包.

apr下载地址:http://mirror.bit.edu.cn/apache//apr/apr-1.6.2.tar.gz
apr-util下载地址:http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.0.tar.gz

编译安装apr,apr-util

[root@ling ~]#ls
anaconda-ks.cfg  apr-1.5.2.tar.gz  apr-util-1.5.4.tar.gz  install.log
apr-1.5.2        apr-util-1.5.4    httpd-2.4.25.tar.bz2   install.log.syslog

apr

[root@ling ~]#tar xf  apr-1.5.2.tar.gz  
[root@ling ~]#cd apr-1.5.2
[root@ling apr-1.5.2]#./configure --prefix=/usr/local/apr 
[root@ling apr-1.5.2]#make && make install

apr-util
由于apr-util依赖于apr,所以要使用–with-apr=/path/to/apr

[root@ling ~]#tar xf  apr-util-1.5.4.tar.gz 
[root@ling ~]#cd apr-util-1.5.4
[root@ling apr-util-1.5.4]#./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr-util
[root@ling apr-util-1.5.4]#make && make install

3、安装httpd-2.4

创建apche的属组与属主,由于是系统用户与系统组,所以要使用-r选项

[root@ling ~]#groupadd -r apache
[root@ling ~]#useradd -r -g apache apache

编译安装:

解压

[root@ling ~]#tar xf httpd-2.4.25.tar.bz2 
[root@ling ~]#cd httpd-2.4.25

编译

[root@ling httpd-2.4.25]#./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
  1. –prefix: httpd-2.4程序安装路径
  2. –sysconf: 配置文件安装路径
  3. –enable:所有的–enable后面都是模块,这里表示编译时启动这些模块。

    –enable-so: 支持动态模块加载机制
    –enable-ssl: 支持加密协议
    –enable-cgi,表示启用cgi模块,就是当客户端访问一个动态资源时,httpd与后端的php或者perl或者python进行交互时用到的的一个模块,httpd-2.4支持fastcgi,不过要自己配置启用这个模块
    –enable-rewrite: 支持URL重写功能

  4. –with-zlip: zlib是一个压缩库,里面包含了很多压缩格式的算法,这里表示传输时支持zlib库中的压缩格式

  5. –with-pcre: 支持扩展正则表达式,这个在URL重写时会用到
  6. –enable-modules=most:表示支持大多数常用模块,也可以使用all表示全部模块
  7. –enable-mpms-shared=all:表示将所有支持mpm的共享模块都编译进来
  8. –with-mpm=prefork:MPM默认为prefork模块

按照以上方式进行安装时会报错
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

原因是缺少pcre的安装包,安装此包即可

[root@ling httpd-2.4.25]#yum -y install pcre-devel

如果发生其他模块没有启动或者模块没有找到等问题,大部分都是没有安装开发包与开发环境,安装方式如下:

[root@ling httpd-2.4.25]#yum -y install "Development Tools" "Server Platform Development"

再编译一次即可,编译完成之后,进行安装

[root@ling httpd-2.4.25]#make && make install

4、启动httpd-2.4

(1) 使用 ss 命令查看80端口是否被监听,如果被监听可能是在之前安装过httpd-2.2版本,使用命令service httpd stop关闭httpd服务

[root@ling ~] service httpd stop
也可以使用kill命令,更加暴力直接
[root@ling ~] killall httpd

(2) 启动httpd-2.4服务程序

[root@ling ~]/usr/local/apache/bin/apachectl start

如果不想使用这么麻烦的方式启动,那么可以配置环境变量,配置方法如下:

[root@ling ~] vim /etc/profile.d/httpd.sh

添加如下语句:

exprot PATH=/usr/local/apche/bin:$PATH

重读配置文件:

[root@ling ~] source /etc/profile.d/httpd.sh

查看环境变量,看/usr/local/apache/bin是否位于环境变量中的第一个

[root@ling ~] echo $PATH
/usr/local/apache/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

查看apachectl命令的路径,看是否位于httpd-2.4的安装路径下

[root@ling ~]#which apachectl
/usr/local/apache/bin/apachectl

启动服务

[root@ling ~]#apchectl start

检查web服务是否正常
可以通过客户端浏览器输入主机的ip地址进行访问,也可以通过另外一台虚拟linux主机通过 curl 命令进行访问,如果显示It works!则表示正常工作

5、为httpd-2.4配置服务脚本

(1) 如果通过yum命令安装过httpd-2.2,则将httpd-2.2的服务脚本复制修改一下即可

[root@ling ~]#cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
[root@ling ~]#vim /etc/rc.d/init.d/httpd24

修改其中的某些参数:

        apachectl=/usr/local/apache/bin/apachectl   #服务所在位置
        httpd=/usr/local/apache/bin/httpd        #默认程序所在位置
        prog=httpd
        pidfile=${PIDFILE-/var/run/httpd/httpd24.pid}  #httpd-2.4运行时pid所在的文件位置
        lockfile=${LOCKFILE-/var/lock/subsys/httpd24}  #httpd-2.4进程锁所在的位置
        RETVAL=0
        STOP_TIMEOUT=${STOP_TIMEOUT-10}

(2) 让httpd-2.4能够开机自启

[root@ling ~]# chkconfig --add httpd24
[root@ling ~]#chkconfig --list | grep httpd
httpd        0:off  1:off   2:off   3:off   4:off   5:off   6:off
httpd24     0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@ling ~]# chkconfig --level 3 httpd24 on

(3) 启动服务

[root@ling ~]# service httpd24 restart

你可能感兴趣的:(Linux)