#!/bin/sh # $FreeBSD$ # 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. # 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 %%WWWOWN%%" # Arguments of pre-start limits run. . %%RC_SUBR%% name="nginx" rcvar=`set_rcvar` 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="%%PREFIX%%/sbin/nginx" _pidprefix="/var/run/nginx" pidfile="${_pidprefix}.pid" required_files=%%PREFIX%%/etc/nginx/nginx.conf [ -z "$nginx_enable" ] && nginx_enable="NO" [ -z "$nginx_profiles" ] && nginx_profiles="" [ -z "$nginx_flags" ] && nginx_flags="" [ -z "$nginxlimits_enable" ] && nginxlimits_enable="NO" [ -z "$nginxlimits_args" ] && nginxlimits_args="-e -U %%WWWOWN%%" load_rc_config $name if [ -n "$2" ]; then profile="$2" if [ "x${nginx_profiles}" != "x" ]; then pidfile="${_pidprefix}.${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}" %%PREFIX%%/etc/rc.d/nginx%%RC_SUBR_SUFFIX%% $1 ${profile} retcode="$?" if [ "0${retcode}" -ne 0 ]; then failed="${profile} (${retcode}) ${failed:-}" else success="${profile} ${success:-}" fi done exit 0 fi fi nginx_checkconfig() { 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 } extra_commands="reload configtest upgrade gracefulstop" run_rc_command "$1"