184 lines
5.3 KiB
Plaintext
184 lines
5.3 KiB
Plaintext
|
#!/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, comes from
|
||
|
# apache2@ service file
|
||
|
#
|
||
|
unset instance_suffix
|
||
|
if [ -n "$START_APACHE_INSTANCE" ]; then
|
||
|
instance_suffix="@$START_APACHE_INSTANCE"
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# load sysconfig variables APACHE_* from instance sysconfig
|
||
|
# file; START_APACHE_SYSCONFIG_FILE can be used for change the system
|
||
|
# default (e. g. for testing purposes)
|
||
|
#
|
||
|
export HTTPD_SYSCONFIG_FILE=${START_APACHE_SYSCONFIG_FILE:-/etc/sysconfig/apache2${instance_suffix}}
|
||
|
load_sysconfig
|
||
|
|
||
|
#
|
||
|
# dir to locate pid file into; START_APACHE_RUN_DIR can be used
|
||
|
# to change the system default (e. g. for testing purposes)
|
||
|
#
|
||
|
run_dir="${START_APACHE_RUN_DIR:-/run}"
|
||
|
|
||
|
unset server_flags
|
||
|
#
|
||
|
# server_flags: -DSYSCONFIG
|
||
|
#
|
||
|
if [ -f "$HTTPD_SYSCONFIG_FILE" ]; then
|
||
|
server_flags="$server_flags -DSYSCONFIG"
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# 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
|
||
|
# take /usr/sbin/httpd, which will
|
||
|
# exist thanks to update alternatives
|
||
|
apache_bin="$HTTPD_SBIN_BASE"
|
||
|
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}
|
||
|
|
||
|
#
|
||
|
# where to write configuration depending on sysconfig variables
|
||
|
#
|
||
|
sysconfd_dir=$(dirname $httpd_conf)/sysconfig${instance_suffix}.d/
|
||
|
|
||
|
#
|
||
|
# set PidFile to this file name; PidFile should not
|
||
|
# be used in the configuration to change this, otherwise
|
||
|
# stopping will not work
|
||
|
#
|
||
|
pid_file=$run_dir/httpd${instance_suffix}.pid
|
||
|
|
||
|
#
|
||
|
# involve the sysconfig variables
|
||
|
#
|
||
|
[ -d ${sysconfd_dir} ] || mkdir -p ${sysconfd_dir} || exit 1
|
||
|
for c in global.conf include.conf loadmodule.conf; do
|
||
|
echo "# File generated from $HTTPD_SYSCONFIG_FILE, do not edit. Edit the sysconfig file instead." > ${sysconfd_dir}/$c
|
||
|
done
|
||
|
# APACHE_ACCESS_LOG -> global.conf
|
||
|
if [ -n "$APACHE_ACCESS_LOG" ]; then
|
||
|
echo "CustomLog $APACHE_ACCESS_LOG" | sed 's:,:\nCustomLog :' >> ${sysconfd_dir}/global.conf
|
||
|
fi
|
||
|
# APACHE_CONF_INCLUDE_FILES -> include.conf
|
||
|
for file in $APACHE_CONF_INCLUDE_FILES; do
|
||
|
test ${file:0:1} = / || file=/etc/apache2/$file
|
||
|
if [ ! -e $file ]; then
|
||
|
continue
|
||
|
fi
|
||
|
echo "Include $file" >> ${sysconfd_dir}/include.conf
|
||
|
done
|
||
|
# APACHE_CONF_INCLUDE_DIRS -> include.conf
|
||
|
for dir in $APACHE_CONF_INCLUDE_DIRS; do
|
||
|
test ${dir:0:1} = / || dir=/etc/apache2/$dir
|
||
|
if ! ( [ -e $dir ] || [ -e ${dir%/*} ] ); then
|
||
|
continue
|
||
|
fi
|
||
|
echo "Include $dir" >> ${sysconfd_dir}/include.conf
|
||
|
done
|
||
|
# APACHE_SERVERADMIN -> global.conf
|
||
|
if [ -n "$APACHE_SERVERADMIN" ]; then
|
||
|
echo "ServerAdmin $APACHE_SERVERADMIN" >> ${sysconfd_dir}/global.conf
|
||
|
fi
|
||
|
# APACHE_SERVERNAME -> global.conf
|
||
|
if [ -n "$APACHE_SERVERNAME" ]; then
|
||
|
echo "ServerName $APACHE_SERVERNAME" >> ${sysconfd_dir}/global.conf
|
||
|
fi
|
||
|
# APACHE_START_TIMEOUT
|
||
|
# not used nowadays
|
||
|
# APACHE_SERVERSIGNATURE -> global.conf
|
||
|
if [ -n "$APACHE_SERVERSIGNATURE" ]; then
|
||
|
echo "ServerSignature $APACHE_SERVERSIGNATURE" >> ${sysconfd_dir}/global.conf
|
||
|
fi
|
||
|
# APACHE_LOGLEVEL -> global.conf
|
||
|
if [ -n "$APACHE_LOGLEVEL" ]; then
|
||
|
echo "LogLevel $APACHE_LOGLEVEL" >> ${sysconfd_dir}/global.conf
|
||
|
fi
|
||
|
# APACHE_USE_CANONICAL_NAME -> global.conf
|
||
|
if [ -n "$APACHE_USE_CANONICAL_NAME" ]; then
|
||
|
echo "UseCanonicalName $APACHE_USE_CANONICAL_NAME" >> ${sysconfd_dir}/global.conf
|
||
|
fi
|
||
|
# APACHE_SERVERTOKENS -> global.conf
|
||
|
if [ -n "$APACHE_SERVERTOKENS" ]; then
|
||
|
echo "ServerTokens $APACHE_SERVERTOKENS" >> ${sysconfd_dir}/global.conf
|
||
|
fi
|
||
|
# APACHE_TACEENABLE -> global.conf
|
||
|
if [ -n "$APACHE_TRACEENABLE" ]; then
|
||
|
echo "TraceEnable $APACHE_TRACEENABLE" >> ${sysconfd_dir}/global.conf
|
||
|
fi
|
||
|
# APACHE_EXTENDED_STATUS -> global.conf
|
||
|
if [ -n "$APACHE_EXTENDED_STATUS" ]; then
|
||
|
if [ "$APACHE_EXTENDED_STATUS" == "lua" ]; then
|
||
|
server_flags="$server_flags -DLUA_STATUS"
|
||
|
elif [ "$APACHE_EXTENDED_STATUS" == "on" ]; then
|
||
|
server_flags="$server_flags -DEXTENDED_STATUS"
|
||
|
fi
|
||
|
fi
|
||
|
# APACHE_MODULES -> loadmodule.conf
|
||
|
get_module_list
|
||
|
module_ids=($HTTPD_MODULE_IDS)
|
||
|
module_paths=($HTTPD_MODULE_PATHS)
|
||
|
for i in "${!module_ids[@]}"; do
|
||
|
echo "LoadModule ${module_ids[$i]} ${module_paths[$i]}" >> ${sysconfd_dir}/loadmodule.conf
|
||
|
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
|
||
|
#
|
||
|
|
||
|
exec $apache_bin $server_flags \
|
||
|
-C "PidFile $pid_file" \
|
||
|
-C "Include $sysconfd_dir/loadmodule.conf" \
|
||
|
-C "Include $sysconfd_dir/global.conf" \
|
||
|
-f $httpd_conf \
|
||
|
-c "Include $sysconfd_dir/include.conf" \
|
||
|
$@
|
||
|
|
||
|
exit 0
|
||
|
|