forked from Lainports/freebsd-ports
The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for various modern desktop and server operating systems, such as UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server which provides HTTP services in sync with the current HTTP standards. The 2.x branch of Apache Web Server includes several improvements like threading, use of APR, native IPv6 and SSL support, and many more. WWW: http://httpd.apache.org/ Note: Since apache24 does not enable every module by default in httpd.conf the list of modules to build was preselected to match build param --enable-modules=most MPM selection is now an OPTION also if the MPM is build statically or dynamically. In the later case all modules are build/installed but only the selected MPM has an entry in httpd.conf (see apache issue 53882) Per default the MPM prefork (static) will be build, to get the best compatibility. Custom variants like itk/peruser are not supported at the moment. Port based on my work prototype from the apache@ list and patch from PR 174617 with hat apache@ PR: 174617 Submitted by: <swall@redcom.com>
196 lines
5.5 KiB
Bash
196 lines
5.5 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
|
|
# PROVIDE: apache24
|
|
# REQUIRE: LOGIN cleanvar sshd
|
|
# KEYWORD: shutdown
|
|
|
|
#
|
|
# Add the following lines to /etc/rc.conf to enable apache24:
|
|
# apache24_enable (bool): Set to "NO" by default.
|
|
# Set it to "YES" to enable apache24
|
|
# apache24_profiles (str): Set to "" by default.
|
|
# Define your profiles here.
|
|
# apache24limits_enable (bool):Set to "NO" by default.
|
|
# Set it to yes to run `limits $limits_args`
|
|
# just before apache starts.
|
|
# apache24_flags (str): Set to "" by default.
|
|
# Extra flags passed to start command.
|
|
# apache24limits_args (str): Default to "-e -C daemon"
|
|
# Arguments of pre-start limits run.
|
|
# apache24_http_accept_enable (bool): Set to "NO" by default.
|
|
# Set to yes to check for accf_http kernel
|
|
# module on start up and load if not loaded.
|
|
# apache24_fib (str): Set an altered default network view for apache
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="apache24"
|
|
rcvar=apache24_enable
|
|
|
|
start_precmd="apache24_prestart"
|
|
restart_precmd="apache24_checkconfig"
|
|
reload_precmd="apache24_checkconfig"
|
|
reload_cmd="apache24_graceful"
|
|
graceful_cmd="apache24_graceful"
|
|
gracefulstop_cmd="apache24_gracefulstop"
|
|
configtest_cmd="apache24_checkconfig"
|
|
command="%%PREFIX%%/sbin/httpd"
|
|
_pidprefix="/var/run/httpd"
|
|
pidfile="${_pidprefix}.pid"
|
|
required_files=%%PREFIX%%/etc/apache24/httpd.conf
|
|
envvars="%%PREFIX%%/sbin/envvars"
|
|
|
|
[ -z "$apache24_enable" ] && apache24_enable="NO"
|
|
[ -z "$apache24limits_enable" ] && apache24limits_enable="NO"
|
|
[ -z "$apache24limits_args" ] && apache24limits_args="-e -C daemon"
|
|
[ -z "$apache24_http_accept_enable" ] && apache24_http_accept_enable="NO"
|
|
|
|
apache24_accf()
|
|
{
|
|
if checkyesno apache24_http_accept_enable; then
|
|
/sbin/kldstat -v | grep accf_http > /dev/null 2>&1 || /sbin/kldload accf_http || return ${?}
|
|
/sbin/kldstat -v | grep accf_data > /dev/null 2>&1 || /sbin/kldload accf_data || return ${?}
|
|
else
|
|
apache24_flags="${apache24_flags} -DNOHTTPACCEPT"
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
|
|
if [ -n "$2" ]; then
|
|
profile="$2"
|
|
if [ "x${apache24_profiles}" != "x" ]; then
|
|
pidfile="${_pidprefix}.${profile}.pid"
|
|
eval apache24_configfile="\${apache24_${profile}_configfile:-}"
|
|
if [ "x${apache24_configfile}" = "x" ]; then
|
|
echo "You must define a configuration file (apache24_${profile}_configfile)"
|
|
exit 1
|
|
fi
|
|
required_files="${apache24_configfile}"
|
|
eval apache24_enable="\${apache24_${profile}_enable:-${apache24_enable}}"
|
|
eval apache24_flags="\${apache24_${profile}_flags:-${apache24_flags}}"
|
|
eval apache24_http_accept_enable="\${apache24_${profile}_http_accept_enable:-${apache24_http_accept_enable}}"
|
|
eval apache24limits_enable="\${apache24limits_${profile}_enable:-${apache24limits_enable}}"
|
|
eval apache24limits_args="\${apache24limits_${profile}_args:-${apache24limits_args}}"
|
|
eval apache24_fib="\${apache24_${profile}_fib:-${apache24_fib}}"
|
|
eval command="\${apache24_${profile}_command:-${command}}"
|
|
eval pidfile="\${apache24_${profile}_pidfile:-${pidfile}}"
|
|
eval apache24_envvars="\${apache24_${profile}_envvars:-${envvars}}"
|
|
apache24_flags="-f ${apache24_configfile} -c \"PidFile ${pidfile}\" ${apache24_flags}"
|
|
else
|
|
echo "$0: extra argument ignored"
|
|
fi
|
|
else
|
|
eval apache24_envvars=${envvars}
|
|
if [ "x${apache24_profiles}" != "x" -a "x$1" != "x" ]; then
|
|
for profile in ${apache24_profiles}; do
|
|
eval _enable="\${apache24_${profile}_enable}"
|
|
case "x${_enable:-${apache24_enable}}" in
|
|
x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
|
|
continue
|
|
;;
|
|
x[Yy][Ee][Ss])
|
|
;;
|
|
*)
|
|
if test -z "$_enable"; then
|
|
_var=apache24_enable
|
|
else
|
|
_var=apache24_"${profile}"_enable
|
|
fi
|
|
echo "Bad value" \
|
|
"'${_enable:-${apache24_enable}}'" \
|
|
"for ${_var}. " \
|
|
"Profile ${profile} skipped."
|
|
continue
|
|
;;
|
|
esac
|
|
echo "===> apache24 profile: ${profile}"
|
|
%%PREFIX%%/etc/rc.d/apache24 $1 ${profile}
|
|
retcode="$?"
|
|
if [ "0${retcode}" -ne 0 ]; then
|
|
failed="${profile} (${retcode}) ${failed:-}"
|
|
else
|
|
success="${profile} ${success:-}"
|
|
fi
|
|
done
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
if [ "${1}" != "stop" ] ; then \
|
|
apache24_accf
|
|
fi
|
|
|
|
apache24_requirepidfile()
|
|
{
|
|
apache24_checkconfig
|
|
|
|
if [ ! "0`check_pidfile ${pidfile} ${command}`" -gt 1 ]; then
|
|
echo "${name} not running? (check $pidfile)."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
apache24_checkconfig()
|
|
{
|
|
if test -f ${apache24_envvars}
|
|
then
|
|
. ${apache24_envvars}
|
|
fi
|
|
|
|
echo "Performing sanity check on apache24 configuration:"
|
|
eval ${command} ${apache24_flags} -t
|
|
}
|
|
|
|
apache24_graceful() {
|
|
apache24_requirepidfile
|
|
|
|
echo "Performing a graceful restart"
|
|
eval ${command} ${apache24_flags} -k graceful
|
|
}
|
|
|
|
apache24_gracefulstop() {
|
|
apache24_requirepidfile
|
|
|
|
echo "Performing a graceful stop"
|
|
eval ${command} ${apache24_flags} -k graceful-stop
|
|
}
|
|
|
|
apache24_precmd()
|
|
{
|
|
apache24_checkconfig
|
|
|
|
if checkyesno apache24limits_enable
|
|
then
|
|
eval `/usr/bin/limits ${apache24limits_args}` 2>/dev/null
|
|
else
|
|
return 0
|
|
fi
|
|
|
|
}
|
|
|
|
apache24_checkfib () {
|
|
if command -v check_namevarlist > /dev/null 2>&1; then
|
|
check_namevarlist fib && return 0
|
|
fi
|
|
|
|
$SYSCTL net.fibs >/dev/null 2>&1 || return 0
|
|
|
|
apache24_fib=${apache24_fib:-"NONE"}
|
|
if [ "x$apache24_fib" != "xNONE" ]
|
|
then
|
|
command="/usr/sbin/setfib -F ${apache24_fib} ${command}"
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
apache24_prestart() {
|
|
apache24_checkfib
|
|
apache24_precmd
|
|
}
|
|
|
|
extra_commands="reload graceful gracefulstop configtest"
|
|
run_rc_command "$1"
|