189 lines
4.9 KiB
Plaintext
189 lines
4.9 KiB
Plaintext
|
#!/sbin/runscript
|
||
|
# Copyright 1999-2011 Gentoo Foundation
|
||
|
# Distributed under the terms of the GNU General Public License v2
|
||
|
|
||
|
extra_commands="configtest modules virtualhosts"
|
||
|
extra_started_commands="configdump fullstatus graceful gracefulstop reload"
|
||
|
|
||
|
description_configdump="Dumps the configuration of the runing apache server. Requires server-info to be enabled and www-client/lynx."
|
||
|
description_configtest="Run syntax tests for configuration files."
|
||
|
description_fullstatus="Gives the full status of the server. Requires lynx and server-status to be enabled."
|
||
|
description_graceful="A graceful restart advises the children to exit after the current request and reloads the configuration."
|
||
|
description_gracefulstop="A graceful stop advises the children to exit after the current request and stops the server."
|
||
|
description_modules="Dump a list of loaded Static and Shared Modules."
|
||
|
description_reload="Kills all children and reloads the configuration."
|
||
|
description_virtualhosts="Show the settings as parsed from the config file (currently only shows the virtualhost settings)."
|
||
|
description_stop="Kills all children and stops the server."
|
||
|
|
||
|
depend() {
|
||
|
need net
|
||
|
use mysql dns logger netmount postgresql
|
||
|
after sshd
|
||
|
}
|
||
|
|
||
|
configtest() {
|
||
|
ebegin "Checking ${SVCNAME} configuration"
|
||
|
checkconfig
|
||
|
eend $?
|
||
|
}
|
||
|
|
||
|
checkconfd() {
|
||
|
if [ ! -f /etc/init.d/sysfs ]; then
|
||
|
eerror "This init script works only with openrc (baselayout-2)."
|
||
|
eerror "If you still need baselayout-1.x, please, use"
|
||
|
eerror "apache2.initd-baselayout-1 from /usr/share/doc/apache2-*/"
|
||
|
fi
|
||
|
|
||
|
PIDFILE="${PIDFILE:-/var/run/apache2.pid}"
|
||
|
TIMEOUT=${TIMEOUT:-15}
|
||
|
|
||
|
SERVERROOT="${SERVERROOT:-/usr/lib64/apache2}"
|
||
|
if [ ! -d ${SERVERROOT} ]; then
|
||
|
eerror "SERVERROOT does not exist: ${SERVERROOT}"
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
CONFIGFILE="${CONFIGFILE:-/etc/apache2/httpd.conf}"
|
||
|
[ "${CONFIGFILE#/}" = "${CONFIGFILE}" ] && CONFIGFILE="${SERVERROOT}/${CONFIGFILE}"
|
||
|
if [ ! -r "${CONFIGFILE}" ]; then
|
||
|
eerror "Unable to read configuration file: ${CONFIGFILE}"
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
APACHE2_OPTS="${APACHE2_OPTS} -d ${SERVERROOT}"
|
||
|
APACHE2_OPTS="${APACHE2_OPTS} -f ${CONFIGFILE}"
|
||
|
[ -n "${STARTUPERRORLOG}" ] && APACHE2_OPTS="${APACHE2_OPTS} -E ${STARTUPERRORLOG}"
|
||
|
|
||
|
APACHE2="/usr/sbin/apache2"
|
||
|
}
|
||
|
|
||
|
checkconfig() {
|
||
|
checkpath --directory /run/apache_ssl_mutex
|
||
|
checkconfd || return 1
|
||
|
|
||
|
${APACHE2} ${APACHE2_OPTS} -t 1>/dev/null 2>&1
|
||
|
ret=$?
|
||
|
if [ $ret -ne 0 ]; then
|
||
|
eerror "${SVCNAME} has detected an error in your setup:"
|
||
|
${APACHE2} ${APACHE2_OPTS} -t
|
||
|
fi
|
||
|
|
||
|
return $ret
|
||
|
}
|
||
|
|
||
|
start() {
|
||
|
checkconfig || return 1
|
||
|
|
||
|
ebegin "Starting ${SVCNAME}"
|
||
|
# Use start stop daemon to apply system limits #347301
|
||
|
start-stop-daemon --start -- ${APACHE2} ${APACHE2_OPTS} -k start
|
||
|
|
||
|
local i=0 retval=1
|
||
|
while [ $i -lt ${TIMEOUT} ] ; do
|
||
|
if [ -e "${PIDFILE}" ] ; then
|
||
|
retval=0
|
||
|
break
|
||
|
fi
|
||
|
sleep 1 && i=$(expr $i + 1)
|
||
|
done
|
||
|
|
||
|
eend ${retval}
|
||
|
}
|
||
|
|
||
|
stop() {
|
||
|
if [ "${RC_CMD}" = "restart" ]; then
|
||
|
checkconfig || return 1
|
||
|
else
|
||
|
checkconfd || return 1
|
||
|
fi
|
||
|
|
||
|
PID=$(cat "${PIDFILE}" 2>/dev/null)
|
||
|
if [ -z "${PID}" ]; then
|
||
|
einfo "${SVCNAME} not running (no pid file)"
|
||
|
return 0
|
||
|
fi
|
||
|
|
||
|
ebegin "Stopping ${SVCNAME}"
|
||
|
${APACHE2} ${APACHE2_OPTS} -k stop
|
||
|
|
||
|
local i=0 retval=0
|
||
|
while ( test -f "${PIDFILE}" || pgrep -P ${PID} apache2 >/dev/null ) \
|
||
|
&& [ $i -lt ${TIMEOUT} ]; do
|
||
|
sleep 1 && i=$(expr $i + 1)
|
||
|
done
|
||
|
[ -e "${PIDFILE}" ] && retval=1
|
||
|
|
||
|
eend ${retval}
|
||
|
}
|
||
|
|
||
|
reload() {
|
||
|
RELOAD_TYPE="${RELOAD_TYPE:-graceful}"
|
||
|
|
||
|
checkconfig || return 1
|
||
|
|
||
|
if [ "${RELOAD_TYPE}" = "restart" ]; then
|
||
|
ebegin "Restarting ${SVCNAME}"
|
||
|
${APACHE2} ${APACHE2_OPTS} -k restart
|
||
|
eend $?
|
||
|
elif [ "${RELOAD_TYPE}" = "graceful" ]; then
|
||
|
ebegin "Gracefully restarting ${SVCNAME}"
|
||
|
${APACHE2} ${APACHE2_OPTS} -k graceful
|
||
|
eend $?
|
||
|
else
|
||
|
eerror "${RELOAD_TYPE} is not a valid RELOAD_TYPE. Please edit /etc/conf.d/${SVCNAME}"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
graceful() {
|
||
|
checkconfig || return 1
|
||
|
ebegin "Gracefully restarting ${SVCNAME}"
|
||
|
${APACHE2} ${APACHE2_OPTS} -k graceful
|
||
|
eend $?
|
||
|
}
|
||
|
|
||
|
gracefulstop() {
|
||
|
checkconfig || return 1
|
||
|
ebegin "Gracefully stopping ${SVCNAME}"
|
||
|
${APACHE2} ${APACHE2_OPTS} -k graceful-stop
|
||
|
eend $?
|
||
|
}
|
||
|
|
||
|
modules() {
|
||
|
checkconfig || return 1
|
||
|
${APACHE2} ${APACHE2_OPTS} -M 2>&1
|
||
|
}
|
||
|
|
||
|
fullstatus() {
|
||
|
LYNX="${LYNX:-lynx -dump}"
|
||
|
STATUSURL="${STATUSURL:-http://localhost/server-status}"
|
||
|
|
||
|
if ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then
|
||
|
eerror "lynx not found! you need to emerge www-client/lynx"
|
||
|
else
|
||
|
${LYNX} ${STATUSURL}
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
virtualhosts() {
|
||
|
checkconfig || return 1
|
||
|
${APACHE2} ${APACHE2_OPTS} -S
|
||
|
}
|
||
|
|
||
|
configdump() {
|
||
|
LYNX="${LYNX:-lynx -dump}"
|
||
|
INFOURL="${INFOURL:-http://localhost/server-info}"
|
||
|
|
||
|
checkconfd || return 1
|
||
|
|
||
|
if ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then
|
||
|
eerror "lynx not found! you need to emerge www-client/lynx"
|
||
|
else
|
||
|
echo "${APACHE2} started with '${APACHE2_OPTS}'"
|
||
|
for i in config server list; do
|
||
|
${LYNX} "${INFOURL}/?${i}" | sed '/Apache Server Information/d;/^[[:space:]]\+[_]\+$/Q'
|
||
|
done
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# vim: ts=4 filetype=gentoo-init-d
|