在本节中,我们将创建一个脚本,将Nginx守护进程转换为实际的系统服务。 这有两个作用:守护程序可以使用标准命令控制,更重要的是,它可以在系统启动时自动启动,并在系统关闭时停止。
System V scripts
大多数基于Linux的操作系统使用System-V风格的init守护进程。 换句话说,他们的启动过程由一个称为init的守护进程管理。
这个守护进程基于运行级别的原理运行,它代表计算机的状态。 这里是一个表表示各种运行级别:
运行级别 |
状态 |
0 |
系统关闭 |
1 |
单用户模式(救援模式) |
2 |
多用户模式,不支持NFS |
3 |
完全多用户模式 |
4 |
未使用 |
5 |
图形界面模式 |
6 |
系统重新启动 |
关于init脚本
init脚本(也称为服务启动脚本或甚至sysv脚本)是一个符合某种标准的shell脚本。 该脚本通过诸如开始,停止和其他等命令来控制守护进程应用程序。首先,当计算机启动时,init守护程序将使用start参数运行脚本。 另一种可能性是通过从shell手动执行脚本:
-
[root@example.com ~]# service nginx start
或者如果您的系统没有service命令:
-
[root@example.com ~]# /etc/init.d/nginx start
Nginx init脚本
/etc/init.d/nginx:
基于Debian的发行版本
-
#! /bin/sh
-
-
### BEGIN INIT INFO
-
# Provides: nginx
-
# Required-Start: $all
-
# Required-Stop: $all
-
# Default-Start: 2 3 4 5
-
# Default-Stop: 0 1 6
-
# Short-Description: starts the nginx web server
-
# Description: starts nginx using start-stop-daemon
-
### END INIT INFO
-
-
PATH=/opt/bin:/opt/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-
DAEMON=/opt/sbin/nginx
-
NAME=nginx
-
DESC=nginx
-
-
test -x $DAEMON || exit 0
-
-
# Include nginx defaults if available
-
if [ -f /etc/default/nginx ] ; then
-
. /etc/default/nginx
-
fi
-
-
set -e
-
-
case "$1" in
-
start)
-
echo -n "Starting $DESC: "
-
start-stop-daemon --start --quiet --pidfile /var/run/nginx.pid \
-
--exec $DAEMON -- $DAEMON_OPTS
-
echo "$NAME."
-
;;
-
stop)
-
echo -n "Stopping $DESC: "
-
start-stop-daemon --stop --quiet --pidfile /var/run/nginx.pid \
-
--exec $DAEMON
-
echo "$NAME."
-
;;
-
restart|force-reload)
-
echo -n "Restarting $DESC: "
-
start-stop-daemon --stop --quiet --pidfile \
-
/var/run/nginx.pid --exec $DAEMON
-
sleep 1
-
start-stop-daemon --start --quiet --pidfile \
-
/var/run/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
-
echo "$NAME."
-
;;
-
reload)
-
echo -n "Reloading $DESC configuration: "
-
start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/nginx.pid \
-
--exec $DAEMON
-
echo "$NAME."
-
;;
-
*)
-
N=/etc/init.d/$NAME
-
echo "Usage: $N {start|stop|restart|force-reload}" >&2
-
exit 1
-
;;
-
esac
-
-
exit 0
基于Red Hat的发行版本
注意修改脚本中的路径。
安装Nginx init脚本
添加执行权限:
-
[root@example.com ~]# chmod +x /etc/init.d/nginx
Debian-based发行版本:
-
[root@example.com ~]# update-rc.d -f nginx defaults
Red Hat–based发行版本:
-
[root@example.com ~]# chkconfig nginx on
(责任编辑:IT) |