博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
添加Nginx为系统服务(设置开机启动)
阅读量:4584 次
发布时间:2019-06-09

本文共 5045 字,大约阅读时间需要 16 分钟。

在本节中,我们将创建一个脚本,将守护进程转换为实际的系统服务。 这有两个作用:守护程序可以使用标准命令控制,更重要的是,它可以在系统启动时自动启动,并在系统关闭时停止。

System V scripts

大多数基于的操作系统使用System-V风格的init守护进程。 换句话说,他们的启动过程由一个称为init的守护进程管理。

这个守护进程基于运行级别的原理运行,它代表计算机的状态。 这里是一个表表示各种运行级别:

运行级别 状态
0 系统关闭
1 单用户模式(救援模式)
2 多用户模式,不支持NFS
3 完全多用户模式
4 未使用
5 图形界面模式
6 系统重新启动

关于init脚本

init脚本(也称为服务启动脚本或甚至sysv脚本)是一个符合某种标准的脚本。 该脚本通过诸如开始,停止和其他等命令来控制守护进程应用程序。首先,当计算机启动时,init守护程序将使用start参数运行脚本。 另一种可能性是通过从shell手动执行脚本:

[root@example.com ~]# service nginx start

或者如果您的系统没有service命令:

[root@example.com ~]# /etc/init.d/nginx start

Nginx init脚本

/etc/init.d/:

基于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/binDAEMON=/opt/sbin/nginxNAME=nginxDESC=nginx test -x $DAEMON || exit 0 # Include nginx defaults if availableif [ -f /etc/default/nginx ] ; then        . /etc/default/nginxfi set -e case "$1" in  start)        echo -n "Starting $DESC: "        start-stop-daemon --start --quiet --pidfile /var/run/nginx.pid \                --exec DAEMON−−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−−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(basenamenginx) 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 -Rvalue && chown -Ruser $value           fi       fi   done} start() {    [ -x $nginx ] || exit 5    [ -f $NGINX_CONF_FILE ] || exit 6    make_dirs    echo -n "Starting"Startingprog: "    daemon nginx−cnginx−cNGINX_CONF_FILE    retval=$?    echo    [ retval -eq 0 ] && touchretval -eq 0 ] && touchlockfile    return $retval} stop() {    echo -n "Stopping"Stoppingprog: "    killproc $prog -QUIT    retval=$?    echo    [ retval -eq 0 ] && rm -fretval -eq 0 ] && rm -flockfile    return $retval} restart() {    configtest || return $?    stop    sleep 1    start} reload() {    configtest || return $?    echo -n "Reloading"Reloadingprog: "    killproc $nginx -HUP    RETVAL=$?    echo} force_reload() {    restart} configtest() {  nginx−t−cnginx−t−cNGINX_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:"Usage:0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"        exit 2esac

注意修改脚本中的路径。

安装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

转自:http://www.cnblogs.com/felixzh/p/6283809.html

转载于:https://www.cnblogs.com/duhuo/p/4444936.html

你可能感兴趣的文章
datagrid中设置编辑,删除列是否可以访问
查看>>
Linux下I/O复用 Select与Poll
查看>>
python全栈学习--day10(函数进阶)
查看>>
Android初学第19天
查看>>
Flask框架web开发
查看>>
ios github网址
查看>>
Django 数据库操作之数据库连接
查看>>
写log
查看>>
Python基础 ----- 流程控制
查看>>
选择语言之switch case
查看>>
实现斐波那契神兔
查看>>
【linux就该这么学】-08
查看>>
JavaScript基础知识汇总
查看>>
PyQt4网格布局
查看>>
PHP学习笔记 - 进阶篇(3)
查看>>
极角排序那些事
查看>>
Ganglia+nagios 监控hadoop资源与报警
查看>>
博客园主题样式修改教程
查看>>
TextView实现多个TextView对象的走马灯效果
查看>>
感悟成功
查看>>