#!/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:-/run/apache2.pid}" TIMEOUT=${TIMEOUT:-15} SERVERROOT="${SERVERROOT:-/usr/lib/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 i=0 while [ ! -e "${PIDFILE}" ] && [ $i -lt ${TIMEOUT} ]; do sleep 1 && i=$(expr $i + 1) done eend $(test $i -lt ${TIMEOUT}) } 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 i=0 while ( ! test -f "${PIDFILE}" && pgrep -P ${PID} apache2 >/dev/null ) \ && [ $i -lt ${TIMEOUT} ]; do sleep 1 && i=$(expr $i + 1) done eend $(test $i -lt ${TIMEOUT}) } 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