After installing Nginx, restarting requires "kill-hup Nginx process number" to reload, obviously very inconvenient. It's much easier to manage it directly from a script, just like Apache.
Nginx official long thought, also provided this script, address: Http://wiki.nginx.org/RedHatNginxInitScript. Here are the management scripts that are included here:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 6667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611 7118119120121122123124125126127128129 |
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
.
/etc/rc
.d
/init
.d
/functions
# Source networking configuration.
.
/etc/sysconfig/network
# Check that networking is up.
[
"$NETWORKING" =
"no" ] &&
exit 0
nginx=
"/usr/sbin/nginx"
prog=$(
basename $nginx)
NGINX_CONF_FILE=
"/etc/nginx/nginx.conf"
[ -f
/etc/sysconfig/nginx ] && .
/etc/sysconfig/nginx
lockfile=
/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 |
grep "configure arguments:" |
sed ‘s/[^*]*--user=\([^ ]*\).*/\1/g‘ -`
if [ -z
"`grep $user /etc/passwd`" ];
then
useradd -M -s
/bin/nologin $user
fi
options=`$nginx -V 2>&1 |
grep ‘configure arguments:‘
`
for opt
in $options;
do
if [ `
echo $opt |
grep ‘.*-temp-path‘
` ];
then
value=`
echo $opt |
cut -d
"=" -f 2`
if [ ! -d
"$value" ];
then
# echo "creating" $value
mkdir -p $value &&
chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] ||
exit 5
[ -f $NGINX_CONF_FILE ] ||
exit 6
make_dirs
echo -n $
"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -
eq 0 ] &&
touch $lockfile
return $retval
}
stop() {
echo -n $
"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -
eq 0 ] &&
rm -f $lockfile
return $retval
}
restart() {
configtest ||
return $?
stop
sleep 1
start
}
reload() {
configtest ||
return $?
echo -n $
"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >
/dev/null 2>&1
}
case "$1" in
start)
rh_status_q &&
exit 0
$1
;;
stop)
rh_status_q ||
exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q ||
exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q ||
exit 0
;;
*)
echo $
"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
|
Save the above script to the/etc/init.d/nginx file and modify the two places:
- nginx= "/usr/sbin/nginx" to modify the path of the Nginx execution program.
- Nginx_conf_file= "/etc/nginx/nginx.conf" is modified to the path of the configuration file.
Once saved, the Nginx service can be managed by this script:
$/etc/init.d/nginx start$/etc/init.d/nginx stop$/etc/init.d/nginx Reload ...
Using Chkconfig for Management
The above method has completed the function of using script to manage Nginx service, but it is still not very convenient, such as setting nginx boot up and so on. You can use Chkconfig to set this.
Add Nginx service to Chkconfig management list first:
Chkconfig--add/etc/init.d/nginx
After adding this, you can use the service to start, restart, and so on Nginx operation.
$ service Nginx start$ service nginx stop$ service Nginx Reload ...
Set up terminal mode boot:
http://www.01happy.com/centos-nginx-shell-chkconfig/
CentOS under Nginx startup script and Chkconfig management