码迷,mamicode.com
首页 > Web开发 > 详细

编译安装httpd-2.4

时间:2015-07-02 01:13:37      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:http新特性   2.4   httpd-2.4   

httpd-2.4的安装

实验环境为centOS6.5,由于centOS6上的库文件及开发工具等不适合安装httpd-2.4,所以需要手动安装这两个包apr和apr-util,httpd-2.4依赖1.4版本以上的apr和apr-util。下面简单介绍一下apr。

apr简介

apr(apache portable runtime),即apache的可移植运行环境,由于底层环境的不同,apache应用程序需要根据不同的平台来开发,而apr消除了底层平台的差异,apr能够为大多数的平台提供所有的apr特性支持,包括BeOS,UNIX,Linux等等,apr为这些大部分的平台提供了一个公共的统一操作函数接口,使得不同平台上的apache应用程序执行的接口基本都是统一一致的。

编译安装

下载源码包

-rw-r--r--  1 root root  813976 Jul  1 09:09 apr-1.5.0.tar.bz2
-rw-r--r--  1 root root  695303 Jul  1 09:09 apr-util-1.5.3.tar.bz2
-rw-r--r--  1 root root 4994460 Jul  1 09:09 httpd-2.4.9.tar.bz2

1)编译安装apr-1.5.0

[root@www ~]# tar xf apr-1.5.0.tar.bz2 
[root@www ~]# cd apr-1.5.0
[root@www apr-1.5.0]# ./configure --prefix=/usr/local/apr-1.5.0
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
Configuring APR library
.............
[root@www apr-1.5.0]# make && make install

2)编译安装apr-util-1.5.3

[root@www ~]# tar xf apr-util-1.5.3.tar.bz2 
[root@www ~]# cd apr-util-1.5.3
[root@www apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util-1.5.3/ --with-apr=/usr/local/apr-1.5.0/
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for working mkdir -p... yes
..............
[root@www apr-util-1.5.3]# make && make install

由于apr-util依赖apr所以在安装apr-util时需要通过“--with-apr”指定已安装的apr。


2)编译安装httpd-2.4.9

[root@www ~]# tar xf httpd-2.4.9.tar.bz2 
[root@www ~]# cd httpd-2.4.9
[root@www httpd-2.4.9]#  ./configure --prefix=/usr/local/apache2.4.9 --sysconfdir=/etc/http
d --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/
usr/local/apr-1.5.0 --with-apr-util=/usr/local/apr-util-1.5.3 --enable-mpms-shared=all --with
-mpm=event --enable-modules=most
...........
[root@www httpd-2.4.9]# make && make install

简单介绍一下涉及到的各参数:

--prefix=/usr/local/apache2.4.9    #应用程序安装路径

--sysconfdir=/etc/httpd                #配置文件的安装路径

--enable-so                #支持DSO动态装载模块

--enable-ssl                #要编译启用ssl模块(前提是需要安装openssl-devel)

--enable-cgi               #启用CGI模块(默认就启用)

--enable-rewrite         #URL重写(把用户访问的URL由服务器自动的改成另外一个URL,这是一个非常有

                                   #用的机制)

--with-zlib                  #这是一个压缩库(专用于网络传输)

--with-pcre                 #使用增强的perl正则表达式分析工具(使用这项需要安装pcre-devel,pcre:

                                   #正则表达式分析器)

--with-apr=/usr/local/apr                  #指明apr的目录(若apr在特殊路径下)

--with-apr-util=/usr/local/apr-util/    #指明apr-util路径(若apr-util在特殊路径下)

--enable-mpms-shared=all                #把所有的mpm模块都编译进来而且是共享模块

--with-mpm=event                            #默认使用的mpm模块

--enable-modules=most|all              #还有很多其他模块,其他的动态可装载模块需要编译哪些 

                                                           #(all:所有都编译,most:编译一些常用的模块)

[root@www profile.d]# vim /etc/profile.d/apache.sh 

export PATH=/usr/local/apache2.4.9/bin:$PATH

[root@www profile.d]# . /etc/profile.d/apache.sh

将apache应用程序bin目录添加到path环境变量中。由于是编译安装,所以在/etc/init.d目录下没有对应的脚本文件,需要自己编写,就不编写了,直接将rpm包安装后自动生成的脚本文件httpd复制过来吧,改一下其中的几个参数。

#!/bin/bash
#
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: The Apache HTTP Server is an efficient and extensible  #              server implementing the current HTTP standards.
# processname: httpd
# config: /etc/httpd/httpd.conf
# pidfile: /usr/local/apache2.4.9/logs/httpd.pid
#
### BEGIN INIT INFO
# Provides: httpd
# Required-Start: $local_fs $remote_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Should-Start: distcache
# Short-Description: start and stop Apache HTTP Server
# Description: The Apache HTTP Server is an extensible server 
#  implementing the current HTTP standards.
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

#if [ -f /etc/sysconfig/httpd ]; then
#        . /etc/sysconfig/httpd
#fi

# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.

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

# The semantics of these two functions differ from the way apachectl does
# things -- attempting to start while running is a failure, and shutdown
# when not running is also a failure.  So we just do it the way init scripts
# are expected to behave here.
start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

# When stopping httpd, a delay (of default 10 second) is required
# before SIGKILLing the httpd parent; this gives enough time for the
# httpd parent to SIGKILL any errant children.
stop() {
        echo -n $"Stopping $prog: "
        killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=6
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        # Force LSB behaviour from killproc
        LSB=1 killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
        if [ $RETVAL -eq 7 ]; then
            failure $"httpd shutdown"
        fi
    fi
    echo
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status -p ${pidfile} $httpd
        RETVAL=$?
        ;;
  restart)
        stop
        start
        ;;
  condrestart|try-restart)
        if status -p ${pidfile} $httpd >&/dev/null; then
                stop
                start
        fi
        ;;
  force-reload|reload)
        reload
        ;;
  graceful|help|configtest|fullstatus)
        $apachectl $@
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
        RETVAL=2
esac

exit $RETVAL

apachectl=/usr/local/apache2.4.9/bin/apachectl

httpd=${HTTPD-/usr/local/apache2.4.9/bin/httpd}

pidfile=${PIDFILE-/usr/local/apache2.4.9/logs/httpd.pid}

修改了上面几个参数,这里编译安装的应用程序将pidfile放置在/usr/local/apache2.4.9/logs/,可以通过在主配置文件中通过PidFile参数修改pid文件的放置位置。

PidFile "/var/run/httpd/httpd.pid"
[root@www bin]# chkconfig --add /etc/init.d/httpd 
[root@www bin]# chkconfig --list httpd
httpd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off

启动服务

[root@www logs]# service httpd start
Starting httpd:                                            [  OK  ]
[root@www logs]# ss -tuln | grep 80
tcp    LISTEN     0      128                   :::80                   :::*

技术分享

ok......


目录介绍

mpm模块介绍

编译安装httpd-2.4

标签:http新特性   2.4   httpd-2.4   

原文地址:http://ljbaby.blog.51cto.com/10002758/1669905

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!