Last active
September 24, 2021 09:57
-
-
Save papilip/ab9e04969e80e111e76068969cfffd7a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# $FreeBSD: branches/2016Q2/www/nginx/files/nginx.in 340872 2014-01-24 00:14:07Z mat $ | |
# PROVIDE: nginx | |
# REQUIRE: LOGIN cleanvar | |
# KEYWORD: shutdown | |
# | |
# Add the following lines to /etc/rc.conf to enable nginx: | |
# nginx_enable (bool): Set to "NO" by default. | |
# Set it to "YES" to enable nginx | |
# nginx_profiles (str): Set to "" by default. | |
# Define your profiles here. | |
# nginx_pid_prefix (str): Set to "" by default. | |
# When using profiles manually assign value to "nginx_" | |
# for prevent collision with other PIDs names. | |
# nginxlimits_enable (bool): Set to "NO" by default. | |
# Set it to yes to run `limits $limits_args` | |
# just before nginx starts. | |
# nginx_flags (str): Set to "" by default. | |
# Extra flags passed to start command. | |
# nginxlimits_args (str): Default to "-e -U www" | |
# Arguments of pre-start limits run. | |
. /etc/rc.subr | |
name="nginx" | |
rcvar=nginx_enable | |
start_precmd="nginx_precmd" | |
restart_precmd="nginx_checkconfig" | |
reload_precmd="nginx_checkconfig" | |
configtest_cmd="nginx_checkconfig" | |
gracefulstop_cmd="nginx_gracefulstop" | |
upgrade_precmd="nginx_checkconfig" | |
upgrade_cmd="nginx_upgrade" | |
command="/opt/nginx/sbin/nginx" | |
_pidprefix="/opt/nginx/logs" | |
pidfile="${_pidprefix}/${name}.pid" | |
_tmpprefix="/var/tmp/nginx" | |
required_files=/opt/nginx/conf/nginx.conf | |
extra_commands="reload configtest upgrade gracefulstop" | |
[ -z "$nginx_enable" ] && nginx_enable="NO" | |
[ -z "$nginxlimits_enable" ] && nginxlimits_enable="NO" | |
[ -z "$nginxlimits_args" ] && nginxlimits_args="-e -U www" | |
load_rc_config $name | |
if [ -n "$2" ]; then | |
profile="$2" | |
if [ "x${nginx_profiles}" != "x" ]; then | |
pidfile="${_pidprefix}/${nginx_pid_prefix}${profile}.pid" | |
eval nginx_configfile="\${nginx_${profile}_configfile:-}" | |
if [ "x${nginx_configfile}" = "x" ]; then | |
echo "You must define a configuration file (nginx_${profile}_configfile)" | |
exit 1 | |
fi | |
required_files="${nginx_configfile}" | |
eval nginx_enable="\${nginx_${profile}_enable:-${nginx_enable}}" | |
eval nginx_flags="\${nginx_${profile}_flags:-${nginx_flags}}" | |
eval nginxlimits_enable="\${nginxlimits_${profile}_enable:-${nginxlimits_enable}}" | |
eval nginxlimits_args="\${nginxlimits_${profile}_args:-${nginxlimits_args}}" | |
nginx_flags="-c ${nginx_configfile} -g \"pid ${pidfile};\" ${nginx_flags}" | |
else | |
echo "$0: extra argument ignored" | |
fi | |
else | |
if [ "x${nginx_profiles}" != "x" -a "x$1" != "x" ]; then | |
for profile in ${nginx_profiles}; do | |
echo "===> nginx profile: ${profile}" | |
/usr/local/etc/rc.d/nginx $1 ${profile} | |
retcode="$?" | |
if [ "0${retcode}" -ne 0 ]; then | |
failed="${profile} (${retcode}) ${failed:-}" | |
else | |
success="${profile} ${success:-}" | |
fi | |
done | |
exit 0 | |
fi | |
fi | |
# tmpfs(5) | |
nginx_checktmpdir() | |
{ | |
if [ ! -d ${_tmpprefix} ] ; then | |
install -d -o www -g www -m 755 ${_tmpprefix} | |
fi | |
} | |
nginx_checkconfig() | |
{ | |
nginx_checktmpdir | |
echo "Performing sanity check on nginx configuration:" | |
eval ${command} ${nginx_flags} -t | |
} | |
nginx_gracefulstop() | |
{ | |
echo "Performing a graceful stop:" | |
sig_stop="QUIT" | |
run_rc_command ${rc_prefix}stop $rc_extra_args || return 1 | |
} | |
nginx_upgrade() | |
{ | |
echo "Upgrading nginx binary:" | |
reload_precmd="" | |
sig_reload="USR2" | |
run_rc_command ${rc_prefix}reload $rc_extra_args || return 1 | |
sleep 1 | |
echo "Stopping old binary:" | |
sig_reload="QUIT" | |
pidfile="$pidfile.oldbin" | |
run_rc_command ${rc_prefix}reload $rc_extra_args || return 1 | |
} | |
nginx_precmd() | |
{ | |
nginx_checkconfig | |
if checkyesno nginxlimits_enable | |
then | |
eval `/usr/bin/limits ${nginxlimits_args}` 2>/dev/null | |
else | |
return 0 | |
fi | |
} | |
run_rc_command "$1" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment