httpd編譯安裝

官網:http://httpd.apache.org/  

包:httpd-2.4.20.tar.bz2     

註釋:此處只考慮 2.4+ 的安裝與配置,基於CentOS 6 和 CentOS 7。  

  

(1)環境準備。  

    ~]# yum -y install gcc gcc-c++ apr-devel apr-util-devel pcre pcre-devel openssl openssl-devel  

    ~]# tar -axf httpd-2.4.20.tar.bz2  

    ~]# cd httpd-2.4.20/  

  

(2)注意事項。  

    CentOS 6:注意事項  

        apr 與 apr-util 官網下載地址:http://apr.apache.org/download.cgi  

        版本要求:  

            (1) apr             version >= 1.4+  

                ~]# ./configure  --prefix=/usr/local/apr  

                ~]# make && make install  

  

            (2) apr-util        version >= 1.4+  

                ~]# ./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr  

                ~]# make && make install  

  

(3)編譯安裝。  

    CentOS 6:  

            ~]# ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=all --enable-mpms-shared=all --with-pcre --with-libxml2 --enable-cgi  --with-mpm=prefork  

    CentOS 7:  

            ~]#   ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-modules=all --enable-mpms-shared=all --with-pcre --with-libxml2 --enable-cgi  --with-mpm=prefork  

  

    ~]# make && make install  

  

    註釋:  

        (1)--enable-mods-shared=all --enable-mods-static=all 只能選擇一個,選擇了 shared 之後還可以選擇部分 static。(非必選)  

        (2) --enable-load-all-modules 開啓所有的選項,不要使用,開啓了所有的會存在一些衝突,當需要的時候手動開啓即可。  

        (2)--enable-cgi 爲模塊。--with-pcre --with-libxml2 爲擴展。(非必選)  

        (3)--with-mpm=prefork 指定默認工作模型。(非必選)  

        (4)--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util  爲 CentOS 6 系統的依賴。(CentOS 6 必選)  

  

    查看編譯了那些模塊:  

            ~]# ls /usr/local/httpd/modules  

  

    查看加載了那些模塊:  

            ~]# /usr/local/httpd/bin/httpd -M  

===============================================  

常用選項解釋:  

Configuration:  

    -h, --help             顯示幫助文檔並退出  

  

Installation directories:  

  --prefix=PREFIX         指定安裝路徑  

  

Fine tuning of the installation directories:  

    --sysconfdir=DIR        指定配置文件路徑  

  

Optional Features:  

  --enable-load-all-modules     開啓所有的加載模塊  

  --enable-modules=MODULE-LIST  開啓模塊 | "all" |"most" | "few" | "none" | "reallyall"  

  --enable-mods-shared=MODULE-LIST    共享模塊 |"all" | "most" | "few" | "reallyall"  

  --enable-mods-static=MODULE-LIST   靜態模塊 |"all" | "most" | "few" | "reallyall"  

  --enable-ssl            SSL/TLS :構建 https  

  --enable-mpms-shared=MPM-LIST    共享模塊 | "all"  

  --enable-rewrite        url 重寫  

  --enable-vhost-alias    虛擬主機  

  --enable-proxy-fcgi     FastCGI 模塊  

  --enable-so            允許運行時加載DSO模塊  

  

Optional Packages:  

    --with-apr=PATH         prefix for installed APR or the full path to apr-config  

    --with-apr-util=PATH    prefix for installed APU or the full path to  apu-config  

    --with-mpm=MPM        指定apache默認工作模式:MPM={event|worker|prefork|winnt}  

    --with-pcre=PATH        perl語言兼容正則表達式)是一個用C語言編寫的正則表達式函數庫。  

    --with-libxml2=PATH     Libxml2 是一個xml c語言版的解析器,還支持c++、PHP、Pascal、Ruby、Tcl等語言的綁定  

  

========================================================  

系統服務,啓動,庫,環境變量等設置。  

  

(1)測試是否正常。  

        自帶啓動腳本:  

            /usr/local/httpd/bin/apachectl (start | stop | restart | graceful | graceful-stop)  

        查看端口80是否被監聽:  

            ss -tnl  

  

(2)加入環境變量  

    臨時生效:  

        ~]# export PATH=/usr/local/httpd/bin:$PATH  

  

    永久生效:  

        ~]# vim /etc/profile.d/httpd.sh  

           export PATH=/usr/local/httpd/bin:$PATH  

        ~]# source /etc/profile.d/httpd.sh  

  

    測試:(apachectl 現在是一個命令)  

        ~]# apachectl (start | stop | restart | graceful | graceful-stop)  

  

(3)導出庫文件:  

        ~]# ln -s /usr/local/httpd/include /usr/include/httpd  

  

(4)導出man手冊  

    CentOS 6:  

        ~]# vim /etc/man.config  

    CentOS 7:  

        ~]# vi /etc/man_db.conf  

  

    寫入:  

        MANPATH /usr/local/httpd/man  

  

  

(5)服務腳本文件  

    CentOS 6:新加啓動腳本。  

~]# vi /etc/rc.d/init.d/httpd  

-------------------------------------start----------------------------------------------  

#!/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/local/httpd/bin/apachectl  

httpd=${HTTPD-/usr/local/httpd/bin/httpd}  

prog=httpd  

pidfile=${PIDFILE-/usr/local/httpd/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  

---------------------------------------------------end------------------------------------------------  

  

  

CentOS 7 新加啓動腳本:  

~]# vi   

---------------------------------------------------start------------------------------------------------  

  

---------------------------------------------------end------------------------------------------------  

  

  

(6)開機啓動  

CentOS 6:  

    ~]# chkconfig --add httpd  

    ~]# chkconfig --level 345 httpd on  

    ~]# chkconfig --list httpd  

        httpd          0:off   1:off   2:off   3:on    4:on    5:on    6:off  

  

CentOS 7:  

      

  

(7)系統啓動與停止  

    CentOS 6:  

        service httpd (start | stop | restart)  

    CentOS 7:  

        systemctl (start | stop | restart) httpd.service  

  

(7)語法測試  

    httpd -t  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章