LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1274|回复: 6

debian新手疑问--关于apache配置文件。

[复制链接]
发表于 2009-3-16 21:49:40 | 显示全部楼层 |阅读模式
刚接触debian一个星期。望各位多多请教。

我的问题是哪个才是apache的主要配置文件??

debian:/etc/apache2# pwd&&ls
/etc/apache2
apache2.conf  envvars          mods-available  ports.conf           sites-enabled
conf.d              httpd.conf  mods-enabled          sites-available
debian:/etc/apache2#

以上是/etc/apache2目录下的文件,但哪个才是apache所需要的配置文件我只能每个文件去查看猜出来。

(之前我有用过其它发行版unix)一般我都会查看/etc/init.d/目录下的apache启动脚本能看出apache的配置文件是哪个.但在debian 的/etc/init.d/apache的启动脚本根本没有指出哪个是apache的主要配置文件。搞得我的思路很不清楚。

以下是/etc/init.d/apache2的内容
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          apache2
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop apache2 web server
### END INIT INFO
#
# apache2                This init.d script is used to start apache2.
#                        It basically just calls apache2ctl.

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"

#[ `ls -1 /etc/apache2/sites-enabled/ | wc -l | sed -e 's/ *//;'` -eq 0 ] && \
#echo "You haven't enabled any sites yet, so I'm not starting apache2." && \
#echo "To add and enable a host, use addhost and enhost." && exit 0

#edit /etc/default/apache2 to change this.
HTCACHECLEAN_RUN=auto
HTCACHECLEAN_MODE=daemon
HTCACHECLEAN_SIZE=300M
HTCACHECLEAN_DAEMON_INTERVAL=120
HTCACHECLEAN_PATH=/var/cache/apache2/mod_disk_cache
HTCACHECLEAN_OPTIONS=""

set -e
if [ -x /usr/sbin/apache2 ] ; then
        HAVE_APACHE2=1
else
        echo "No apache MPM package installed"
        exit 0
fi

. /lib/lsb/init-functions

test -f /etc/default/rcS && . /etc/default/rcS
test -f /etc/default/apache2 && . /etc/default/apache2

APACHE2CTL="$ENV /usr/sbin/apache2ctl"
HTCACHECLEAN="$ENV /usr/sbin/htcacheclean"

PIDFILE=`. /etc/apache2/envvars ; echo $APACHE_PID_FILE`
if [ -z "$PIDFILE" ] ; then
        echo ERROR: APACHE_PID_FILE needs to be defined in /etc/apache2/envvars >&2
        exit 2
fi


check_htcacheclean() {
        [ "$HTCACHECLEAN_MODE" = "daemon" ] || return 1

        [ "$HTCACHECLEAN_RUN"  = "yes"    ] && return 0

        [ "$HTCACHECLEAN_RUN"  = "auto" \
          -a -e /etc/apache2/mods-enabled/disk_cache.load ] && return 0
       
        return 1
}

start_htcacheclean() {
        $HTCACHECLEAN $HTCACHECLEAN_OPTIONS -d$HTCACHECLEAN_DAEMON_INTERVAL \
                        -i -p$HTCACHECLEAN_PATH -l$HTCACHECLEAN_SIZE
                               
}

stop_htcacheclean() {
        killall htcacheclean 2> /dev/null || echo ...not running
}

pidof_apache() {
    # if pidof is null for some reasons the script exits automagically
    # classified as good/unknown feature
    PIDS=`pidof apache2` || true

    [ -e $PIDFILE ] && PIDS2=`cat $PIDFILE`
   
    # if there is a pid we need to verify that belongs to apache2
    # for real
    for i in $PIDS; do
            if [ "$i" = "$PIDS2" ]; then
            # in this case the pid stored in the
            # pidfile matches one of the pidof apache
            # so a simple kill will make it
            echo $i
            return 0
        fi
    done
    return 1
}

apache_stop() {
        if `$APACHE2CTL configtest > /dev/null 2>&1`; then
                # if the config is ok than we just stop normaly
                $APACHE2CTL stop 2>&1 | grep -v 'not running' >&2 || true
        else
                # if we are here something is broken and we need to try
                # to exit as nice and clean as possible
                PID=$(pidof_apache)

                if [ "${PID}" ]; then
                        # in this case it is everything nice and dandy
                        # and we kill apache2
                        log_warning_msg "We failed to correctly shutdown apache, so we're now killing all running apache processes. This is almost certainly suboptimal, so please make sure your system is working as you'd expect now!"
                        kill $PID
                elif [ "$(pidof apache2)" ]; then
                        if [ "$VERBOSE" != no ]; then
                                echo " ... failed!"
                                echo "You may still have some apache2 processes running.  There are"
                                echo "processes named 'apache2' which do not match your pid file,"
                                echo "and in the name of safety, we've left them alone.  Please review"
                                echo "the situation by hand."
                        fi
                        return 1
                fi
        fi
}

apache_wait_stop() {
        # running ?
        PIDTMP=$(pidof_apache)
        if $(kill -0 "${PIDTMP:-}" 2> /dev/null); then
            PID=$PIDTMP
        fi

        apache_stop

        # wait until really stopped
        if [ -n "${PID:-}" ]; then
                i=0
                while $(kill -0 "${PID:-}" 2> /dev/null);  do
                        if [ $i = '60' ]; then
                                break;
                         else
                                if [ $i = '0' ]; then
                                        echo -n " ... waiting "
                                else
                                              echo -n "."
                                 fi
                                i=$(($i+1))
                                sleep 1
                      fi
                 done
        fi
}

case $1 in
        start)
                log_daemon_msg "Starting web server" "apache2"
                if $APACHE2CTL start; then
                        if check_htcacheclean ; then
                                log_progress_msg htcacheclean
                                start_htcacheclean || log_end_msg 1
                        fi
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
        ;;
        stop)
                if check_htcacheclean ; then
                        log_daemon_msg "Stopping web server" "htcacheclean"
                        stop_htcacheclean
                        log_progress_msg "apache2"
                else
                        log_daemon_msg "Stopping web server" "apache2"
                fi
                if apache_wait_stop; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
        ;;
        reload | force-reload)
                if ! $APACHE2CTL configtest > /dev/null 2>&1; then
                    $APACHE2CTL configtest || true
                    log_end_msg 1
                    exit 1
                fi
                log_daemon_msg "Reloading web server config" "apache2"
                if pidof_apache > /dev/null ; then
                    if $APACHE2CTL graceful $2 ; then
                        log_end_msg 0
                    else
                        log_end_msg 1
                    fi
                fi
        ;;
        restart)
                if check_htcacheclean ; then
                        log_daemon_msg "Restarting web server" "htcacheclean"
                        stop_htcacheclean
                        log_progress_msg apache2
                else
                        log_daemon_msg "Restarting web server" "apache2"
                fi
                PID=$(pidof_apache) || true
                if ! apache_wait_stop; then
                        log_end_msg 1 || true
                fi
                if $APACHE2CTL start; then
                        if check_htcacheclean ; then
                                start_htcacheclean || log_end_msg 1
                        fi
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
        ;;
        start-htcacheclean)
                log_daemon_msg "Starting htcacheclean"
                start_htcacheclean || log_end_msg 1
                log_end_msg 0
        ;;
        stop-htcacheclean)
                log_daemon_msg "Stopping htcacheclean"
                        stop_htcacheclean
                        log_end_msg 0
        ;;
        status)
                PID=$(pidof_apache)
                if [ -n "$PID" ]; then
                        log_success_msg "Apache is running (pid $PID)."
                        exit 0
                else
                        log_failure_msg "Apache is not running."
                        exit 1
                fi
        ;;
        *)
                log_success_msg "Usage: /etc/init.d/apache2 {start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean|status}"
                exit 1
        ;;
esac
发表于 2009-3-16 22:33:46 | 显示全部楼层
是apache2.conf, 可以将你的配置加在这儿。
apache2.conf又包含了下面目录内的配置。
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/

看看这个文件/etc/apache2/sites-enabled/000-default,里面的内容就熟悉了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-16 22:44:58 | 显示全部楼层
Post by cliff_tian;1961976
是apache2.conf, 可以将你的配置加在这儿。
apache2.conf又包含了下面目录内的配置。
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/

看看这个文件/etc/apache2/sites-enabled/000-default,里面的内容就熟悉了。




我能猜出来是apache2.conf,但我还是不清楚apache启动的时候根据哪里去找apache2.conf.

000-default也不能看出什么头绪
以下是000-default的内容
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
       
        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-16 22:55:49 | 显示全部楼层
我这里我再发下FreeBSD下的apache启动脚本的一部分,从下面就很容易看出apache需要的配置文件就是/usr/local/etc/apache22/httpd.conf.
而在debian上没有发现。

# apache22_fib (str):         Set an altered default network view for apache

. /etc/rc.subr

name="apache22"
rcvar=`set_rcvar`

start_precmd="apache22_prestart"
restart_precmd="apache22_checkconfig"
reload_precmd="apache22_checkconfig"
reload_cmd="apache22_graceful"
graceful_cmd="apache22_graceful"
gracefulstop_cmd="apache22_gracefulstop"
configtest_cmd="apache22_checkconfig"
command="/usr/local/sbin/httpd"
_pidprefix="/var/run/httpd"
pidfile="${_pidprefix}.pid"
required_files=/usr/local/etc/apache22/httpd.conf

[ -z "$apache22_enable" ]       && apache22_enable="NO"
[ -z "$apache22_profiles" ]     && apache22_profiles=""
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-18 22:57:21 | 显示全部楼层
帖沉下去了。。顶一下先。

其实我发这个帖是想知道一个程序在启动的时候,他怎么去找他的配置文件,而我根据什么才能知道他的配置文件。
回复 支持 反对

使用道具 举报

发表于 2009-3-18 23:02:25 | 显示全部楼层
你看 /etc/init.d/apache2 里包含 /etc/default/apache2 的那行
路径之类的配置应该都是在 /etc/default/apache2 里面的

最近发现很多包现在都倾向于把系统级的配置放在 /etc/default 文件夹里
回复 支持 反对

使用道具 举报

发表于 2009-3-25 12:46:17 | 显示全部楼层
000-default是默认站点的配置文件
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表