apache2/start_apache2

155 lines
4.2 KiB
Plaintext
Raw Normal View History

#!/bin/sh
#
# Copyright (c) 1996, 1997, 1998 S.u.S.E. GmbH
# Copyright (c) 1998, 1999, 2000, 2001 SuSE GmbH
# Copyright (c) 2002, 2003, (2004?) SuSE Linux AG
# Copyright (c) 2004(?), 2005, 2006, 2007, 2008 SUSE Linux Products GmbH
#
# Authors: Rolf Haberrecker <apache@suse.de>, 2001
# Peter Poeml <apache@suse.de>, 2002, 2003, 2004, 2005, 2006, 2007,
# 2008, 2009, 2010
#
#
. /usr/share/apache2/script-helpers
#
# which instance should we will run
#
unset instance_suffix
if [ -n "$HTTPD_INSTANCE" ]; then
instance_suffix="@$HTTPD_INSTANCE"
fi
#
# load sysconfig variables APACHE_* from instance sysconfig
# file
#
export SYSCONFIG_FILE=/etc/sysconfig/apache2${instance_suffix}
load_sysconfig
unset server_flags
#
# server_flags: -DSSL and -DSYSCONFIG
#
if [ -f "$SYSCONFIG_FILE" ]; then
server_flags="$server_flags -DSYSCONFIG"
fi
case "$action" in startssl) server_flags="-DSSL";; esac
#
# figure out correct apache2 binary (/usr/sbin/httpd-prefork,
# /usr/sbin/httpd-worker, etc.) and serverflags
#
find_mpm
if [ -n "$HTTPD_MPM" ]; then
apache_bin="$HTTPD_SBIN_BASE-$HTTPD_MPM"
if ! [ -x $apache_bin ]; then
echo >&2 "$apache_bin-$APACHE_MPM is not a valid httpd binary."
echo >&2 "Check your APACHE_MPM setting in /etc/sysconfig/apache2."
exit 1
fi
else
echo >&2 "${warn}No Apache binary found. No MPM package installed? $norm"
echo >&2 "Hint: install the apache2-prefork package, and try again."
exit 1
fi
# server flags from APACHE_SERVER_FLAGS
for i in $APACHE_SERVER_FLAGS; do
case $i in
-D) ;;
-D*) server_flags="$server_flags $i";;
*) server_flags="$server_flags -D$i";;
esac
done
#
# head configuration file
#
httpd_conf=${APACHE_HTTPD_CONF:-/etc/apache2${instance_suffix}/httpd.conf}
#
# default values for some directives that should depend on instance
#
# PidFile
default_pid_file=/var/run/httpd${instance_suffix}.pid
unset sysconfig_setting
#
# involve the sysconfig variables
#
# APACHE_ACCESS_LOG
if [ -n "$APACHE_ACCESS_LOG" ]; then
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "CustomLog $APACHE_ACCESS_LOG")
fi
# APACHE_CONF_INCLUDE_FILES
for file in $APACHE_CONF_INCLUDE_FILES; do
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "Include $file")
done
# APACHE_CONF_INCLUDE_DIRS
for dir in $APACHE_CONF_INCLUDE_DIRS; do
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "Include $dir")
done
# APACHE_SERVERADMIN
if [ -n "$APACHE_SERVERADMIN" ]; then
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "ServerAdmin $APACHE_SERVERADMIN")
fi
# APACHE_SERVERNAME
if [ -n "$APACHE_SERVERNAME" ]; then
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "ServerName $APACHE_SERVERNAME")
fi
# APACHE_START_TIMEOUT
# not used nowadays
# APACHE_SERVERSIGNATURE
if [ -n "$APACHE_SERVERSIGNATURE" ]; then
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "ServerSignature $APACHE_SERVERSIGNATURE")
fi
# APACHE_LOGLEVEL
if [ -n "$APACHE_LOGLEVEL" ]; then
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "LogLevel $APACHE_LOGLEVEL")
fi
# APACHE_USE_CANONICAL_NAME
if [ -n "$APACHE_USE_CANONICAL_NAME" ]; then
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "UseCanonicalName $APACHE_USE_CANONICAL_NAME")
fi
# APACHE_SERVERTOKENS
if [ -n "$APACHE_SERVERTOKENS" ]; then
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "ServerTokens $APACHE_SERVERTOKENS")
fi
# APACHE_EXTENDED_STATUS
if [ -n "$APACHE_EXTENDED_STATUS" ]; then
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "ExtendedStatus $APACHE_EXTENDED_STATUS")
fi
# APACHE_MODULES
get_module_list
module_ids=($HTTPD_MODULE_IDS)
module_paths=($HTTPD_MODULE_PATHS)
for i in "${!module_ids[@]}"; do
sysconfig_setting=("${sysconfig_setting[@]}" "-C" "LoadModule ${module_ids[$i]} ${module_paths[$i]}")
done
#
# a proper home should be set, otherwise the server might end up
# with HOME=/root and some script might try to use that
#
HOME=/var/lib/apache2${instance_suffix}
#
# run Apache
#
echo Running $apache_bin -f $httpd_conf $server_flags \
-C "PidFile $default_pid_file" \
"${sysconfig_setting[@]}" \
$@
exec $apache_bin -f $httpd_conf $server_flags \
-C "PidFile $default_pid_file" \
"${sysconfig_setting[@]}" \
$@
exit 0