編譯安裝httpd-2.4.17

一. 預備環境:

  # 編譯安裝apache之前需要確認:apr(apache虛擬機),apr-util,apr-util-ldap的版本, 不同的版本所依賴的apr版本不同.

  # 例:httpd-2.4.*需要依賴於apr-1.4.*以上的版本

  # 如需下載相應的版本: http://apr.apache.org/  

  # 查看apr的版本


  [root@caiya ~]# rpm -qa apr*

  apr-1.3.9-5.el6_2.i686

  apr-util-ldap-1.3.9-3.el6_0.1.i686

  apr-util-1.3.9-3.el6_0.1.i686

  [root@caiya ~]# 


  A. 安裝組件

  # 安裝apr之前需要確認開發組件和開發庫"Development tools" 和 "Development Libraries"是否已經安裝. 

  # centos 5.X 的版本需要安裝 

  [root@caiya software]# yum groupinstall "Development Libraries"

  [root@caiya software]# yum groupinstall "Development tools"

  # centos 6.X 的版本需要安裝 

  [root@caiya software]# yum groupinstall "Server Platform Development"

  [root@caiya software]# yum groupinstall "Development tools"


  B. 安裝apr, apr-util

  # 下載apr 

  [root@caiya software]# wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz

  [root@caiya software]# tar zxvf apr-1.5.2.tar.gz

  # 如果無法解壓縮, 同步一下軟件時間

  [root@caiya software]# hwclock -s

  # 安裝apr

  [root@caiya apr-1.5.2]# cd apr-1.5.2

  [root@caiya apr-1.5.2]# ./configure --prefix=/usr/local/apr-1.5.2

  [root@caiya apr-1.5.2]# make

  [root@caiya apr-1.5.2]# make install

  # 下載apr-util

  [root@caiya software]# wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz

  [root@caiya software]# tar zxvf apr-util-1.5.4.tar.gz

  [root@caiya software]# cd apr-util-1.5.4


  # 需要注意指定apr的安裝路徑

  [root@caiya apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr-1.5.2

  [root@caiya apr-util-1.5.4]# make

  [root@caiya apr-util-1.5.4]# make install


二. 至此環境已經安裝完成, 可以安裝apache(httpd)

  # 下載httpd安裝包(就近選擇的下載地址, 搜狐鏡像站點)

  [root@caiya software]# wget http://mirrors.sohu.com/apache/httpd-2.4.17.tar.gz

  [root@caiya software]# tar zxvf httpd-2.4.17.tar.gz 

  [root@caiya software]# cd httpd-2.4.17

  [root@caiya httpd-2.4.17]# ./configure \

  --prefix=/usr/local/apache-2.4 \

  --sysconfdir=/etc/httpd \

  --enable-so \

  --enable-rewirte \

  --enable-ssl \

  --enable-cgi \

  --enable-cgid \

  --enable-modules=most \

  --enable-mods-shared=most \

  --enable-mpms-shared=all \

  --with-apr=/usr/local/apr-1.5.2 \

  --with-apr-util=/usr/local/apr-util \


  # 常見報錯一:

  checking for pcre-config... false

  configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

  # 解決辦法

  [root@caiya httpd-2.4.17]# yum install pcre-devel -y


  # 常見報錯二:

  checking whether to enable mod_ssl... 

  configure: error: mod_ssl has been requested but can not be built due to prerequisite failures

  # 解決辦法

  [root@caiya httpd-2.4.17]# yum install openssl-devel -y

  # 配置通過後: 


  [root@caiya httpd-2.4.17]# make

  [root@caiya httpd-2.4.17]# make install


  # 注意: httpd受selinux控制, 如果selinux爲運行狀態, 有可能導致httpd無法啓動

  # 此時爲關閉狀態, 如果不是關閉狀態, 修改selinux配置文件 vim /etc/selinux/config 修改爲: SELINUX=disabled

  [root@caiya local]# getenforce

  Disabled

  [root@caiya local]# 

  # 至此apache已經安裝完畢


三. 配置apache

  # 啓動apache

  # 編譯安裝的啓動腳本在: /usr/local/apache-2.4/bin/apachectl

  [root@caiya bin]# /usr/local/apache-2.4/bin/apachectl start

  # 如果報如下錯誤:

  AH00557: httpd: apr_sockaddr_info_get() failed for caiya.localdomain

  AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. 

  Set the 'ServerName' directive globally to suppress this message

  # 解決辦法:

  [root@caiya httpd]# vim /etc/httpd/httpd.conf

  找到"#ServerName www.example.com:8" 去掉前面的註釋

  # 檢測是否正常啓動(當前爲正常狀態)

  [root@caiya bin]# /usr/local/apache-2.4/bin/apachectl start

  [root@caiya bin]# netstat -tnlp | grep 80

  5:tcp    0    0 :::80    :::*    LISTEN    41862/httpd         

  [root@caiya bin]# ps -ef | grep httpd

  101:root    41862  1    0 19:51 ?    00:00:00 /usr/local/apache-2.4/bin/httpd -k start

  102:daemon  41863  41862  0 19:51 ?    00:00:00 /usr/local/apache-2.4/bin/httpd -k start

  103:daemon  41864  41862  0 19:51 ?    00:00:00 /usr/local/apache-2.4/bin/httpd -k start

  104:daemon  41865  41862  0 19:51 ?    00:00:00 /usr/local/apache-2.4/bin/httpd -k start

  106:root  41952  1738  0 19:51 pts/1    00:00:00 grep -n --color httpd

  [root@caiya bin]#


四. httpd-2.4.x 的訪問策略

  # 單條策略

  require ip ipaddre

  require ip hostname

  require ip username

  require not ip ipaddre

  require not ip hostname

  require not ip username

  # 允許所有主機訪問:

  require all granted

  # 拒絕所有主機訪問:

  require all deny


五. 製作啓動腳本

  # 編譯安裝的httpd-2.4.x的啓動腳本路徑在編譯目錄: /httpd-2.4.17/build/rpm/httpd.init 

  # 當前環境的啓動腳本路徑在: /software/apache/httpd-2.4.17/build/rpm/httpd.init

  # 複製 httpd.init 至 /etc/init.d/httpd

  [root@caiya rpm]# cp /software/apache/httpd-2.4.17/build/rpm/httpd.init /etc/init.d/httpd

  # 修改httpd腳本文件

  [root@caiya rpm]# vim /etc/init.d/httpd 

  # 修改之前(每修改一項先做備份)

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

  61 pidfile=${PIDFILE-/var/run/${prog}.pid}

  62 lockfile=${LOCKFILE-/var/lock/subsys/${prog}}

  63 RETVAL=0

  64

  65 # check for 1.3 configuration

  66 check13 () {

  67         CONFFILE=/etc/httpd/conf/httpd.conf

  68         GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|"

  69         GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|"

  70         GONE="${GONE}AccessConfig|ResourceConfig)"

  71         if grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then

  72                 echo

  73                 echo 1>&2 " Apache 1.3 configuration directives found"

  74                 echo 1>&2 " please read @docdir@/migration.html"

  75                 failure "Apache 1.3 config directives test"

  76                 echo

  77                 exit 1

  78         fi

  79 }

  # 修改之後(紅色爲修改部分)

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

  61 httpd=${HTTPD-/usr/local/apache-2.4/bin/httpd}

  62 # pidfile=${PIDFILE-/var/run/${prog}.pid}

  63 pidfile=${PIDFILE-/usr/local/apache-2.4/logs/httpd.pid}

  64 lockfile=${LOCKFILE-/var/lock/subsys/${prog}}

  65 RETVAL=0

  66

  67 # check for 1.3 configuration

  68 check13 () {

  69         # CONFFILE=/etc/httpd/conf/httpd.conf

  70         CONFFILE=/etc/httpd/httpd.conf

  71         GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|"

  72         GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|"

  73         GONE="${GONE}AccessConfig|ResourceConfig)"

  74         if grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then

  75                 echo

  76                 echo 1>&2 " Apache 1.3 configuration directives found"

  77                 echo 1>&2 " please read @docdir@/migration.html"

  78                 failure "Apache 1.3 config directives test"

  79                 echo

  80                 exit 1

  81         fi

  82 }

  # 修改完成以後, 即可使用 service httpd {start|stop|status...}


  [root@caiya /]# service httpd start

  正在啓動 httpd :    [確定]

  [root@caiya /]# service httpd status

  httpd (pid  3864) 正在運行...

  [root@caiya /]# service httpd stop 

  停止 httpd :    [確定]

  [root@caiya /]# 


六. 添加自動   

  [root@caiya /]# chkconfig --add httpd 

  [root@caiya /]# chkconfig --list | grep httpd

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

  [root@caiya /]# chkconfig httpd on

  [root@caiya /]# chkconfig --list | grep httpd

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

  [root@caiya /]# 


==================== 擴展部分 ====================

# httpd的模塊解釋

選項解釋:

  # 指定安裝路徑

  # --prefix=/usr/local/apache    

  # 指定配置文件的路徑

  # --sysconfdir=/etc/httpd

  # 裝載核心模塊,支持動態共享模塊,以模塊的方式加載PHP, 如果不開啓, 無法使用PHP       

  # --enable-so                   

  # 支持URL重寫

  # --enable-rewrite           

  # 支持ssl的功能, 否則無法使用https   

  # --enable-ssl                  

  # 啓動壓縮機會, 將文本信息壓縮後回覆給客戶端, 瀏覽器自動解壓, 很常用的一種壓縮機制

  # --enable-deflate              

  # 配置PHP的時候讓PHP以FastCGI的模式工作, 必須要開啓此項

  # --enable-proxy-fcgi           


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