(一)介绍:

  Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python解释器编译到服务器中。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。   

(二)安装方式|版本

    安装方式(1.编译安装 2.rpm包安装)

    版本(httpd-2.0  httpd-2.2  httpd-2.4最新版本) 

(三)httpd2.4新特性:

1) MPM支持运行时装载

--enable-mpms-shared=all --with-mpm=prefork|worker|event

2) 支持event MPM

3) 异步读写支持

4) 支持每模块及每目录分别使用不同的日志级别

5) 支持per-request(即支持<If>, <ElseIf>, and <Else>条件判断)

6) 增强版的表达式分析器;

7) 支持毫秒级keepalive timeout;

8) 基于FQDN(域名)的虚拟主机不再需要NameVirtualHost; 

9) 支持用户使用自定义变量; 

新增模块:mod_proxy_fcgi, mod_ratelimit, mod_request, mod_remoteip

备注:2.4版本修改了一些配置机制:不再支持使用order, allow, deny来实现基于IP的访问控制;

(四)编译安装:

  编译前:编译依赖开发环境,yum groupinstall Development tools Server Platform Development -y

    编译三部曲:检查编译环境,编译,安装

    编译安装apr和apr-util

       tar xf apr-1.5.0.tar.bz2 

       cd apr-1.5.0

       ./configure --prefix=/usr/local/apr

       make && make install

       tar xf apr-util-1.5.3.tar.bz2 

       cd apr-util-1.5.3

       ./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr/

       make && make install

    编译安装httpd2.4

      cd httpd-2.4.9

      ./configure --prefix=/usr/local/apache  --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=event  && make && make install         #编译模块

 

    vim /etc/rc.d/init.d/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/conf/httpd.conf

# config: /etc/sysconfig/httpd

# pidfile: /var/run/httpd/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/sbin/apachectl

httpd=${HTTPD-/usr/sbin/httpd}

prog=httpd

pidfile=${PIDFILE-/var/run/httpd/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.

        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() {

        status -p ${pidfile} $httpd > /dev/null

        if [[ $? = 0 ]]; then

                echo -n $"Stopping $prog: "

                killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd

        else

                echo -n $"Stopping $prog: "

                success

        fi

        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


(五)启动测试

  service httpd start

(六)httpd工具

   httpd命令是Apache HTTP服务器程序。

     参数说明

  • -c<httpd指令> 在读取配置文件前,先执行选项中的指令。

  • -C<httpd指令> 在读取配置文件后,再执行选项中的指令。

  • -d<服务器根目录> 指定服务器的根目录。

  • -D<设定文件参数> 指定要传入配置文件的参数。

  • -f<设定文件> 指定配置文件。

  • -h 显示帮助。

  • -l 显示服务器编译时所包含的模块。

  • -L 显示httpd指令的说明。

  • -S 显示配置文件中的设定。

  • -t 测试配置文件的语法是否正确。

  • -v 显示版本信息。          

  • -V 显示版本信息以及建立环境。             

  • -X 以单一程序的方式来启动服务器。