Skip to content

Instantly share code, notes, and snippets.

@vdel26
Last active September 24, 2025 21:37
Show Gist options
  • Select an option

  • Save vdel26/8805927 to your computer and use it in GitHub Desktop.

Select an option

Save vdel26/8805927 to your computer and use it in GitHub Desktop.
Openresty init.d script
#!/bin/sh
#
# chkconfig: 2345 55 25
# Description: Nginx init.d script, put in /etc/init.d, chmod +x /etc/init.d/nginx
# For Debian, run: update-rc.d -f nginx defaults
# For CentOS, run: chkconfig --add nginx
#
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: nginx init.d script
# Description: OpenResty (aka. ngx_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="Nginx Daemon"
NAME=nginx
PREFIX=/usr/local/openresty/nginx
DAEMON=$PREFIX/sbin/$NAME
CONF=$PREFIX/conf/$NAME.conf
PID=$PREFIX/logs/$NAME.pid
SCRIPT=/etc/init.d/$NAME
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
@rcosnita

Copy link
Copy Markdown

Works great. Thank you for this wonderful snippet.

@Alexander-0x80

Copy link
Copy Markdown

You saved me a lot of work , thanks

@mjguisado

Copy link
Copy Markdown

Thanks Victor

@leonzhao2020

Copy link
Copy Markdown

Good,Thks

@zgao4

zgao4 commented Nov 16, 2015

Copy link
Copy Markdown

Thx a lot

@congkhoa

Copy link
Copy Markdown

good job! thanks!

@parserpro

Copy link
Copy Markdown

fails if pid-file exists but process has gone.

@DigDeeply

Copy link
Copy Markdown

It works for me, Thanks~~

@Eric-Guo

Eric-Guo commented Feb 8, 2016

Copy link
Copy Markdown

For those who running in debian/ubuntu, there is more up-to-date version available.

@cthurston

Copy link
Copy Markdown

Thanks for this. Built my own nginx and the script from nginx.org was not working for me so I borrowed this one. Worked great!

@bor8

bor8 commented Mar 23, 2016

Copy link
Copy Markdown

@vdel26: Works. Thanks.

@Eric-Guo: The up-to-date version does not work for me!

@awephy

awephy commented Apr 1, 2016

Copy link
Copy Markdown

Thanks for this,but it does not work for me.
service starts expected,also in chkconfig list,but does not work after reboot!

@stephanebachelier

Copy link
Copy Markdown

@bor8 the version from @Eric-Guo is not configured for openresty

@lojunren

Copy link
Copy Markdown

Thanks for your great job.

@supernintendo

Copy link
Copy Markdown

Works perfectly on Debian 8, much thanks.

@apueee

apueee commented Oct 31, 2016

Copy link
Copy Markdown

This script works fine for me. But not start when reboot. I was using auto scaling in aws. So when new server start from an image it doesn't run nginx.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment