一. 預備環境:
# 編譯安裝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