summaryrefslogtreecommitdiff
path: root/nonsystemd/apache-openrc/httpd.initd
diff options
context:
space:
mode:
Diffstat (limited to 'nonsystemd/apache-openrc/httpd.initd')
-rw-r--r--nonsystemd/apache-openrc/httpd.initd181
1 files changed, 181 insertions, 0 deletions
diff --git a/nonsystemd/apache-openrc/httpd.initd b/nonsystemd/apache-openrc/httpd.initd
new file mode 100644
index 000000000..9e504e54a
--- /dev/null
+++ b/nonsystemd/apache-openrc/httpd.initd
@@ -0,0 +1,181 @@
+#!/usr/bin/openrc-run
+# Copyright 1999-2016 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."
+
+# Apply default values for some conf.d variables.
+PIDFILE="${PIDFILE:-/run/httpd/httpd.pid}"
+TIMEOUT=${TIMEOUT:-15}
+SERVERROOT="${SERVERROOT:-/usr/lib/httpd}"
+CONFIGFILE="${CONFIGFILE:-/etc/httpd/conf/httpd.conf}"
+LYNX="${LYNX:-lynx -dump}"
+STATUSURL="${STATUSURL:-http://localhost/server-status}"
+RELOAD_TYPE="${RELOAD_TYPE:-graceful}"
+
+# Append the server root and configuration file parameters to the
+# user's APACHE2_OPTS.
+APACHE2_OPTS="${APACHE2_OPTS} -d ${SERVERROOT}"
+APACHE2_OPTS="${APACHE2_OPTS} -f ${CONFIGFILE}"
+
+# The path to the apache2 binary.
+APACHE2="/usr/bin/apachectl"
+
+depend() {
+ need net
+ use dns entropy logger mysql netmount postgresql
+ after sshd
+}
+
+configtest() {
+ ebegin "Checking ${SVCNAME} configuration"
+ checkconfig
+ eend $?
+}
+
+checkconfd() {
+ if [ ! -d ${SERVERROOT} ]; then
+ eerror "SERVERROOT does not exist: ${SERVERROOT}"
+ return 1
+ fi
+}
+
+checkconfig() {
+ checkpath --directory /run/httpd
+ checkconfd || return 1
+
+ OUTPUT=$( ${APACHE2} ${APACHE2_OPTS} -t 2>&1 )
+ ret=$?
+ if [ $ret -ne 0 ]; then
+ eerror "${SVCNAME} has detected an error in your setup:"
+ printf "%s\n" "${OUTPUT}"
+ fi
+
+ return $ret
+}
+
+start() {
+ checkconfig || return 1
+
+ if [ -n "${STARTUPERRORLOG}" ] ; then
+ # We must make sure that we only append to APACHE2_OPTS
+ # in start() and not in stop() or anywhere else that may
+ # be executed along with start(), see bug #566726.
+ APACHE2_OPTS="${APACHE2_OPTS} -E ${STARTUPERRORLOG}"
+ fi
+
+ 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
+ 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} httpd >/dev/null ) \
+ && [ $i -lt ${TIMEOUT} ]; do
+ sleep 1 && i=$(expr $i + 1)
+ done
+ [ -e "${PIDFILE}" ] && retval=1
+
+ eend ${retval}
+}
+
+reload() {
+ 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() {
+ if ! command -v $(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() {
+ INFOURL="${INFOURL:-http://localhost/server-info}"
+
+ checkconfd || return 1
+
+ if ! command -v $(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