-
-
Save ihipop/a941d08bce20ead8a84a to your computer and use it in GitHub Desktop.
Openresty init.d script for CENTOS / DEBIAN / UBUNTU
This file contains hidden or 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 | |
# | |
# chkconfig: 2345 55 25 | |
# Description: Openresty init.d script, put in /etc/init.d, chmod +x /etc/init.d/openresty | |
# For Debian, run: update-rc.d -f openresty defaults | |
# For CentOS, run: chkconfig --add openresty | |
# | |
### BEGIN INIT INFO | |
# Provides: openresty | |
# Required-Start: $all | |
# Required-Stop: $all | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: Openresty init.d script | |
# Description: OpenResty (aka. tngx_openresty) is a full-fledged web application server by bundling the standard Nginx core, lots of 3rd-party Nginx modules, as well as most of their external dependencies. | |
### END INIT INFO | |
# | |
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | |
DESC="Openresty (Nginx) Daemon" | |
NAME=nginx | |
PREFIX=/usr/local/openresty/nginx | |
DAEMON=$PREFIX/sbin/$NAME | |
CONF=$PREFIX/conf/$NAME.conf | |
PID=$PREFIX/logs/openresty-$NAME.pid | |
SCRIPT=/etc/init.d/openresty | |
if [ ! -x "$DAEMON" ] || [ ! -f "$CONF" ]; then | |
echo -e "\033[33m $DAEMON has no permission to run. \033[0m" | |
echo -e "\033[33m Or $CONF doesn't exist. \033[0m" | |
sleep 1 | |
exit 1 | |
fi | |
do_start() { | |
if [ -f $PID ]; then | |
echo -e "\033[33m $PID already exists. \033[0m" | |
echo -e "\033[33m $DESC is already running or crashed. \033[0m" | |
echo -e "\033[32m $DESC Reopening $CONF ... \033[0m" | |
$DAEMON -s reopen -c $CONF | |
sleep 1 | |
echo -e "\033[36m $DESC reopened. \033[0m" | |
else | |
echo -e "\033[32m $DESC Starting $CONF ... \033[0m" | |
$DAEMON -c $CONF | |
sleep 1 | |
echo -e "\033[36m $DESC started. \033[0m" | |
fi | |
} | |
do_stop() { | |
if [ ! -f $PID ]; then | |
echo -e "\033[33m $PID doesn't exist. \033[0m" | |
echo -e "\033[33m $DESC isn't running. \033[0m" | |
else | |
echo -e "\033[32m $DESC Stopping $CONF ... \033[0m" | |
$DAEMON -s stop -c $CONF | |
sleep 1 | |
echo -e "\033[36m $DESC stopped. \033[0m" | |
fi | |
} | |
do_reload() { | |
if [ ! -f $PID ]; then | |
echo -e "\033[33m $PID doesn't exist. \033[0m" | |
echo -e "\033[33m $DESC isn't running. \033[0m" | |
echo -e "\033[32m $DESC Starting $CONF ... \033[0m" | |
$DAEMON -c $CONF | |
sleep 1 | |
echo -e "\033[36m $DESC started. \033[0m" | |
else | |
echo -e "\033[32m $DESC Reloading $CONF ... \033[0m" | |
$DAEMON -s reload -c $CONF | |
sleep 1 | |
echo -e "\033[36m $DESC reloaded. \033[0m" | |
fi | |
} | |
do_quit() { | |
if [ ! -f $PID ]; then | |
echo -e "\033[33m $PID doesn't exist. \033[0m" | |
echo -e "\033[33m $DESC isn't running. \033[0m" | |
else | |
echo -e "\033[32m $DESC Quitting $CONF ... \033[0m" | |
$DAEMON -s quit -c $CONF | |
sleep 1 | |
echo -e "\033[36m $DESC quitted. \033[0m" | |
fi | |
} | |
do_test() { | |
echo -e "\033[32m $DESC Testing $CONF ... \033[0m" | |
$DAEMON -t -c $CONF | |
} | |
do_info() { | |
$DAEMON -V | |
} | |
case "$1" in | |
start) | |
do_start | |
;; | |
stop) | |
do_stop | |
;; | |
reload) | |
do_reload | |
;; | |
restart) | |
do_stop | |
do_start | |
;; | |
quit) | |
do_quit | |
;; | |
test) | |
do_test | |
;; | |
info) | |
do_info | |
;; | |
*) | |
echo "Usage: $SCRIPT {start|stop|reload|restart|quit|test|info}" | |
exit 2 | |
;; | |
esac | |
exit 0 |
This file contains hidden or 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 | |
### BEGIN INIT INFO | |
# Provides: openresty | |
# Required-Start: $local_fs $remote_fs $network $syslog $named | |
# Required-Stop: $local_fs $remote_fs $network $syslog $named | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: starts the Openresty(nginx) web server | |
# Description: starts Openresty(nginx) using start-stop-daemon | |
### END INIT INFO | |
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | |
DESC="Openresty (Nginx) Daemon" | |
NAME=nginx | |
PREFIX=/usr/local/openresty/nginx | |
CONF=$PREFIX/conf/$NAME.conf | |
DAEMON=$PREFIX/sbin/$NAME | |
# Include nginx defaults if available | |
if [ -r /etc/default/nginx ]; then | |
. /etc/default/nginx | |
fi | |
test -x $DAEMON || exit 0 | |
. /lib/init/vars.sh | |
. /lib/lsb/init-functions | |
# Try to extract nginx pidfile | |
PID=$(cat ${CONF} | grep -Ev '^\s*#' | awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }' | head -n1) | |
if [ -z "$PID" ] | |
then | |
PID=$PREFIX/logs/$NAME.pid | |
fi | |
# Check if the ULIMIT is set in /etc/default/nginx | |
if [ -n "$ULIMIT" ]; then | |
# Set the ulimits | |
ulimit $ULIMIT | |
fi | |
# | |
# Function that starts the daemon/service | |
# | |
do_start() | |
{ | |
# Return | |
# 0 if daemon has been started | |
# 1 if daemon was already running | |
# 2 if daemon could not be started | |
start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON --test > /dev/null \ | |
|| return 1 | |
start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON -- \ | |
$DAEMON_OPTS 2>/dev/null \ | |
|| return 2 | |
} | |
test_nginx_config() { | |
$DAEMON -t $DAEMON_OPTS >/dev/null 2>&1 | |
} | |
# | |
# Function that stops the daemon/service | |
# | |
do_stop() | |
{ | |
# Return | |
# 0 if daemon has been stopped | |
# 1 if daemon was already stopped | |
# 2 if daemon could not be stopped | |
# other if a failure occurred | |
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PID --name $NAME | |
RETVAL="$?" | |
sleep 1 | |
return "$RETVAL" | |
} | |
# | |
# Function that sends a SIGHUP to the daemon/service | |
# | |
do_reload() { | |
start-stop-daemon --stop --signal HUP --quiet --pidfile $PID --name $NAME | |
return 0 | |
} | |
# | |
# Rotate log files | |
# | |
do_rotate() { | |
start-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAME | |
return 0 | |
} | |
# | |
# Online upgrade nginx executable | |
# | |
# "Upgrading Executable on the Fly" | |
# http://nginx.org/en/docs/control.html | |
# | |
do_upgrade() { | |
# Return | |
# 0 if nginx has been successfully upgraded | |
# 1 if nginx is not running | |
# 2 if the pid files were not created on time | |
# 3 if the old master could not be killed | |
if start-stop-daemon --stop --signal USR2 --quiet --pidfile $PID --name $NAME; then | |
# Wait for both old and new master to write their pid file | |
while [ ! -s "${PID}.oldbin" ] || [ ! -s "${PID}" ]; do | |
cnt=`expr $cnt + 1` | |
if [ $cnt -gt 10 ]; then | |
return 2 | |
fi | |
sleep 1 | |
done | |
# Everything is ready, gracefully stop the old master | |
if start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PID}.oldbin" --name $NAME; then | |
return 0 | |
else | |
return 3 | |
fi | |
else | |
return 1 | |
fi | |
} | |
case "$1" in | |
start) | |
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" | |
do_start | |
case "$?" in | |
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | |
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | |
esac | |
;; | |
stop) | |
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | |
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | |
esac | |
;; | |
restart) | |
log_daemon_msg "Restarting $DESC" "$NAME" | |
# Check configuration before stopping nginx | |
if ! test_nginx_config; then | |
log_end_msg 1 # Configuration error | |
exit 0 | |
fi | |
do_stop | |
case "$?" in | |
0|1) | |
do_start | |
case "$?" in | |
0) log_end_msg 0 ;; | |
1) log_end_msg 1 ;; # Old process is still running | |
*) log_end_msg 1 ;; # Failed to start | |
esac | |
;; | |
*) | |
# Failed to stop | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
reload|force-reload) | |
log_daemon_msg "Reloading $DESC configuration" "$NAME" | |
# Check configuration before reload nginx | |
# | |
# This is not entirely correct since the on-disk nginx binary | |
# may differ from the in-memory one, but that's not common. | |
# We prefer to check the configuration and return an error | |
# to the administrator. | |
if ! test_nginx_config; then | |
log_end_msg 1 # Configuration error | |
exit 0 | |
fi | |
do_reload | |
log_end_msg $? | |
;; | |
configtest|testconfig) | |
log_daemon_msg "Testing $DESC configuration" | |
test_nginx_config | |
log_end_msg $? | |
;; | |
status) | |
status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $? | |
;; | |
upgrade) | |
log_daemon_msg "Upgrading binary" "$NAME" | |
do_upgrade | |
log_end_msg 0 | |
;; | |
rotate) | |
log_daemon_msg "Re-opening $DESC log files" "$NAME" | |
do_rotate | |
log_end_msg $? | |
;; | |
*) | |
echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}" >&2 | |
exit 3 | |
;; | |
esac | |
: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment