添加Nginx为系统服务(设置开机启动)
时间:2016-11-18 11:27 来源:linux.it.net.cn 作者:IT
在本节中,我们将创建一个脚本,将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的发行版本
-
#!/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
注意修改脚本中的路径。
安装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)
在本节中,我们将创建一个脚本,将Nginx守护进程转换为实际的系统服务。 这有两个作用:守护程序可以使用标准命令控制,更重要的是,它可以在系统启动时自动启动,并在系统关闭时停止。 System V scripts
关于init脚本
或者如果您的系统没有service命令:
Nginx init脚本
基于Red Hat的发行版本
注意修改脚本中的路径。 安装Nginx init脚本
Debian-based发行版本:
Red Hat–based发行版本:
(责任编辑:IT) |