我這樣裝APACHE

   這個話題似乎太簡單太俗了,因爲大凡做過系統維護的讀者誰不知道怎麼安裝Apache呢。所以,筆者在這裏不打算去談大家都十分熟悉而且十分簡單的內容。我們來談談Apache的配置文件httpd.conf,Apache的啓動腳本及自動化的安裝腳本。
一.Apache配置文件
   不知道大家有沒有這樣的感覺,打開httpd.conf文件後,發現裏面的註釋太多了,多得讓你想在裏面查找個東西都要費不少的勁。實踐中,爲了避免去折騰這個httpd.conf文件,往往是不去管它,而是去另外一個文件裏面幹活:

$APACHE_HOME/conf/extra/httpd_vhost.conf。
這樣雖然在一定程度上方便了操作,可是終歸有必須“拜訪”httpd.conf的時候,而且,雜亂無章的httpd.conf文件也不符合安全的要求。所以,insecure.org上有文章就指出,httpd.conf文件應該從頭自己寫。筆者贊同這個提法,實踐中總是用自己從頭寫的httpd.conf。
自己從頭寫的配置文件,簡明扼要,方便操作,看起來就給人一種很清爽的感覺。筆者的httpd.conf文件涉及的知識點可以滿足一箇中型網站的要求了,比如MPM參數設置,用戶跟蹤,圖片請求日誌處理,防惡意訪問,防盜鏈等。在附件裏給出。

二.Apache的啓動腳本
    Apache的啓動腳本$APACHE_HOME/bin/apachectl用起來確實方便,不過筆者看來,它還不是十分方便。我們希望他能放到/etc/init.d/下面去,在系統啓動時,自動啓動Apache。而且,在平常維護的時候,也不需要去關注Apache到底安裝在哪裏的,只要執行/etc/init.d/目錄下的該腳本,就搞定了(永遠都不要奢望監控人員會熟悉你的系統)。所以,筆者對其做了修改,使其能完成這個任務。修改後內容如下:
[root@bj-web1 bin]# cat /etc/init.d/apache
#!/bin/sh
#
# chkconfig: 345 90  19
# description: startup script for apache
# processname: httpd
ARGV="$@"
APACHE_HOME=/usr/local/apache2
HTTPD="$APACHE_HOME/bin/httpd"
if test -f $APACHE_HOME/bin/envvars; then
  . $APACHE_HOME/bin/envvars
fi
LYNX="links -dump"
STATUSURL="http://localhost:80/server-status"
ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"

if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
    $ULIMIT_MAX_FILES
fi

ERROR=0
if [ "x$ARGV" = "x" ] ; then
    ARGV="-h"
fi

case $ARGV in
start|stop|restart|graceful|graceful-stop)
    $HTTPD -k $ARGV
    ERROR=$?
    ;;
configtest)
    $HTTPD -t
    ERROR=$?
    ;;
status)
    $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '
    ;;
fullstatus)
    $LYNX $STATUSURL
    ;;
*)
    $HTTPD $ARGV
    ERROR=$?
esac

exit $ERROR

[root@bj-web1 bin]# ll /etc/init.d/apache
-rwxr-xr-x  1 root root 1014  1月  2 16:01 /etc/init.d/apache
[root@bj-web1 bin]# chkconfig --list | grep apache
apache          0:關閉  1:關閉  2:啓用  3:啓用  4:啓用  5:啓用  6:關閉


三.Apache自動安裝腳本
    安裝過Apache的讀者就知道,即使在DELL 2850上裝Apache,也要幾分鐘時間,而且,如果手工安裝的話,還容易導致每次安裝出來的Apache都不一樣,這樣的系統是很難維護的。所以,筆者實踐中都是用腳本安裝。下面是筆者使用的安裝腳本:
root@bj-web1 bin]# cat install_apache.sh
#!/bin/bash
#file name: install_apache.sh

CUR_DIR=`pwd`
APACHE_HOME=/usr/local/apache2

#----------------------------
tar -jxvf httpd-2.2.4.tar.bz2
cd httpd-2.2.4
#----------------------------
./configure \
--prefix=$APACHE_HOME\
--disable-actions \
--disable-asis \
--disable-autoindex \
--disable-cgi \
--disable-cgid \
--disable-charset-lite \
--disable-p_w_picpathmap \
--disable-include \
--disable-negotiation \
--disable-userdir \
--enable-cache \
--enable-deflate \
--enable-disk-cache \
--enable-expires \
--enable-file-cache \
--enable-headers \
--enable-http \
--enable-logio \
--enable-mem-cache \
--enable-mime-magic \
--enable-proxy \
--enable-proxy-http \
--enable-proxy-balancer \
--enable-rewrite \
--enable-so \
--enable-status \
--enable-usertrack \
--with-mpm=worker \
--with-included-apr

make && make install

rm -rf $APACHE_HOME/cgi_bin
rm -rf $APACHE_HOME/manual
rm -rf $APACHE_HOME/htdocs/*

install $CUR_DIR/apache.conf $APACHE_HOME/conf/httpd.conf
install $CUR_DIR/apache.sh /etc/init.d/apache
chkconfig apache on
/etc/init.d/apache start

到此爲止,我們說了Apache安裝過程中的三個文件,httpd.conf, apache.sh和install_apache.sh。那麼,實際安裝過程中,應該把這三個文件放到什麼位置呢?筆者常用的刀法是這樣:
[root@bj-web1 bin]# cd /usr/local/src
[root@bj-web1 src]# ll
-rw-r--r--   1 root  root      4864  1月  2 15:42 apache.conf
-rw-r--r--   1 root  root       995  1月  2 15:46 apache.sh
-rw-r--r--   1 root  root   4930375 2007-01-06  httpd-2.2.4.tar.bz2
-rw-r--r--   1 root  root      1035  1月  2 15:53 install_apache2.sh
[root@bj-web1 src]# sh install_apache2.sh

幾分鐘後,一個全新的Apache就裝好了。




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