这个话题似乎太简单太俗了,因为大凡做过系统维护的读者谁不知道怎么安装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-imagemap \
--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就装好了。
一.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-imagemap \
--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就装好了。
附件:http://down.51cto.com/data/2349187
本文转自zkjian517 51CTO博客,原文链接:http://blog.51cto.com/zoukejian/57831