Ubuntu/webserver/nginx/init

You may also download this init file in gzip format.
 * Nginx-INIT.gz

. /lib/lsb/init-functions PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/sbin/nginx PS="nginx" PIDNAME="nginx"				#lets you do $PS-slave PIDFILE=$PIDNAME.pid                   #pid file PIDSPATH=/var/run DESCRIPTION="Nginx Server..." RUNAS=root                             #user to run as SCRIPT_OK=0                             #ala error codes SCRIPT_ERROR=1                         #ala error codes TRUE=1                                 #boolean FALSE=0                                #boolean lockfile=/var/lock/subsys/nginx NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" test -x $DAEMON || exit 0 if [ -f /etc/default/nginx ] ; then . /etc/default/nginx fi setFilePerms{ if [ -f $PIDSPATH/$PIDFILE ]; then chmod 400 $PIDSPATH/$PIDFILE fi } configtest { $DAEMON -t -c $NGINX_CONF_FILE } getPSCount { return `pgrep -f $PS | wc -l` } isRunning { if [ $1 ]; then pidof_daemon $1 PID=$? if [ $PID -gt 0 ]; then return 1 else return 0 fi       else pidof_daemon PID=$? if [ $PID -gt 0 ]; then return 1 else return 0 fi       fi } wait_for_pid { try=0 while test $try -lt 35 ; do               case "$1" in                        'created')                        if [ -f "$2" ] ; then                                try=''                                break                        fi                        ;;                        'removed') if [ ! -f "$2" ] ; then try='' break fi                       ;; esac #echo -n. try=`expr $try + 1` sleep 1 done } status{ isRunning isAlive=$? if [ "${isAlive}" -eq $TRUE ]; then echo "$PIDNAME found running with processes: `pidof $PS`" else echo "$PIDNAME is NOT running." fi } removePIDFile{ if [ $1 ]; then if [ -f $1 ]; then rm -f $1 fi       else #Do default removal if [ -f $PIDSPATH/$PIDFILE ]; then rm -f $PIDSPATH/$PIDFILE fi       fi } start { log_daemon_msg "Starting $DESCRIPTION" isRunning isAlive=$? if [ "${isAlive}" -eq $TRUE ]; then log_end_msg $SCRIPT_ERROR else start-stop-daemon --start --quiet --chuid $RUNAS --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON \ -- -c $NGINX_CONF_FILE setFilePerms log_end_msg $SCRIPT_OK fi } stop { log_daemon_msg "Stopping $DESCRIPTION" isRunning isAlive=$? if [ "${isAlive}" -eq $TRUE ]; then start-stop-daemon --stop --quiet --pidfile $PIDSPATH/$PIDFILE wait_for_pid 'removed' $PIDSPATH/$PIDFILE if [ -n "$try" ] ; then log_end_msg $SCRIPT_ERROR else removePIDFile log_end_msg $SCRIPT_OK fi       else log_end_msg $SCRIPT_ERROR fi } reload { configtest || return $? log_daemon_msg "Reloading (via HUP) $DESCRIPTION" isRunning if [ $? -eq $TRUE ]; then `killall -HUP $PS` #to be safe log_end_msg $SCRIPT_OK else log_end_msg $SCRIPT_ERROR fi } quietupgrade { log_daemon_msg "Peforming Quiet Upgrade $DESCRIPTION" isRunning isAlive=$? if [ "${isAlive}" -eq $TRUE ]; then kill -USR2 `cat $PIDSPATH/$PIDFILE` kill -WINCH `cat $PIDSPATH/$PIDFILE.oldbin` isRunning isAlive=$? if [ "${isAlive}" -eq $TRUE ]; then kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin` wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin removePIDFile $PIDSPATH/$PIDFILE.oldbin log_end_msg $SCRIPT_OK else log_end_msg $SCRIPT_ERROR log_daemon_msg "ERROR! Reverting back to original $DESCRIPTION" kill -HUP `cat $PIDSPATH/$PIDFILE` kill -TERM `cat $PIDSPATH/$PIDFILE.oldbin` kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin` wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin removePIDFile $PIDSPATH/$PIDFILE.oldbin log_end_msg $SCRIPT_ok fi else log_end_msg $SCRIPT_ERROR fi } terminate { log_daemon_msg "Force terminating (via KILL) $DESCRIPTION" PIDS=`pidof $PS` || true [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE` for i in $PIDS; do		if [ "$i" = "$PIDS2" ]; then kill $i wait_for_pid 'removed' $PIDSPATH/$PIDFILE removePIDFile fi done log_end_msg $SCRIPT_OK } destroy { log_daemon_msg "Force terminating and may include self (via KILLALL) $DESCRIPTION" killall $PS -q >> /dev/null 2>&1 log_end_msg $SCRIPT_OK } pidof_daemon { PIDS=`pidof $PS` || true [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE` for i in $PIDS; do       if [ "$i" = "$PIDS2" ]; then return 1 fi   done return 0 } case "$1" in start)	start        ;;  stop) stop ;; restart|force-reload)	stop	sleep 1	start        ;;  reload) $1	;; status)	status	;;  configtest) $1       ;;  quietupgrade)	$1	;;  terminate) $1	;; destroy)	$1	;;  *) FULLPATH=/etc/init.d/$PS echo "Usage: $FULLPATH {start|stop|restart|force-reload|status|configtest|quietupgrade|terminate|destroy}" echo "      The 'destroy' command should only be used as a last resort." exit 1 ;; esac exit 0
 * 1) ! /bin/sh
 * 2) BEGIN INIT INFO
 * 3) Provides:          nginx
 * 4) Required-Start:    $remote_fs $syslog
 * 5) Required-Stop:     $remote_fs $syslog
 * 6) Default-Start:     2 3 4 5
 * 7) Default-Stop:      0 1 6
 * 8) Short-Description: nginx init.d dash script for Ubuntu <=9.10.
 * 9) Description:       nginx init.d dash script for Ubuntu <=9.10.
 * 10) END INIT INFO
 * 11) nginx - this Debian Almquist shell (dash) script, starts and stops the nginx
 * 12)         daemon for ubuntu 9.10 and lesser version numbered releases.
 * 13) description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
 * 14)               proxy and IMAP/POP3 proxy server.  This \
 * 15) 		script will manage the initiation of the \
 * 16) 		server and it's process state.
 * 17) processname: nginx
 * 18) config:      /usr/local/nginx/conf/nginx.conf
 * 19) pidfile:     /acronymlabs/server/nginx.pid
 * 20) Provides:    nginx
 * 21) Author:  Jason Giedymin
 * 22)          .
 * 23) Version: 2.0 02-NOV-2009 jason.giedymin AT gmail.com
 * 24) Notes: nginx init.d dash script for Ubuntu <=9.10.
 * 25) This script's project home is:
 * 26) 	http://code.google.com/p/nginx-init-ubuntu/
 * 27)                               MIT X11 License
 * 28) Copyright (c) 2009 Jason Giedymin, http://Amuxbit.com formerly
 * 29) 				    http://AcronymLabs.com
 * 30) Permission is hereby granted, free of charge, to any person obtaining
 * 31) a copy of this software and associated documentation files (the
 * 32) "Software"), to deal in the Software without restriction, including
 * 33) without limitation the rights to use, copy, modify, merge, publish,
 * 34) distribute, sublicense, and/or sell copies of the Software, and to
 * 35) permit persons to whom the Software is furnished to do so, subject to
 * 36) the following conditions:
 * 37) The above copyright notice and this permission notice shall be
 * 38) included in all copies or substantial portions of the Software.
 * 39) THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * 40) EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * 41) MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * 42) NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * 43) LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * 44) OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * 45) WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 1) permit persons to whom the Software is furnished to do so, subject to
 * 2) the following conditions:
 * 3) The above copyright notice and this permission notice shall be
 * 4) included in all copies or substantial portions of the Software.
 * 5) THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * 6) EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * 7) MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * 8) NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * 9) LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * 10) OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * 11) WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 1) OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * 2) WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 1)                               Functions
 * 1)                               Functions
 * 1)                               Consts
 * 1)                               Consts
 * 1)                               Simple Tests
 * 1)                               Simple Tests
 * 1) test if nginx is a file and executable
 * 1) Include nginx defaults if available
 * 1) set exit condition
 * 2) set -e
 * 1)                               Functions
 * 1)                               Functions
 * 1) courtesy of php-fpm