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

System V scripts

<br\>
大多数基于Linux的操作系统使用System-V风格的init守护进程。 换句话说,他们的启动过程由一个称为init的守护进程管理。
这个守护进程基于运行级别的原理运行,它代表计算机的状态。 这里是一个表表示各种运行级别:

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

关于init脚本

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

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

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

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

Nginx init脚本

<br\>
/etc/init.d/nginx:
基于Debian的发行版本

  1. #! /bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides:          nginx
  4. # Required-Start:    $all
  5. # Required-Stop:     $all
  6. # Default-Start:     2 3 4 5
  7. # Default-Stop:      0 1 6
  8. # Short-Description: starts the nginx web server
  9. # Description:       starts nginx using start-stop-daemon
  10. ### END INIT INFO
  11. PATH=/opt/bin:/opt/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  12. DAEMON=/opt/sbin/nginx
  13. NAME=nginx
  14. DESC=nginx
  15. test -x $DAEMON || exit 0
  16. # Include nginx defaults if available
  17. if [ -f /etc/default/nginx ] ; then
  18. . /etc/default/nginx
  19. fi
  20. set -e
  21. case "$1" in
  22. start)
  23. echo -n "Starting $DESC: "
  24. start-stop-daemon --start --quiet --pidfile /var/run/nginx.pid \
  25. --exec $DAEMON -- $DAEMON_OPTS
  26. echo "$NAME."
  27. ;;
  28. stop)
  29. echo -n "Stopping $DESC: "
  30. start-stop-daemon --stop --quiet --pidfile /var/run/nginx.pid \
  31. --exec $DAEMON
  32. echo "$NAME."
  33. ;;
  34. restart|force-reload)
  35. echo -n "Restarting $DESC: "
  36. start-stop-daemon --stop --quiet --pidfile \
  37. /var/run/nginx.pid --exec $DAEMON
  38. sleep 1
  39. start-stop-daemon --start --quiet --pidfile \
  40. /var/run/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
  41. echo "$NAME."
  42. ;;
  43. reload)
  44. echo -n "Reloading $DESC configuration: "
  45. start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/nginx.pid \
  46. --exec $DAEMON
  47. echo "$NAME."
  48. ;;
  49. *)
  50. N=/etc/init.d/$NAME
  51. echo "Usage: $N {start|stop|restart|force-reload}" >&2
  52. exit 1
  53. ;;
  54. esac
  55. exit 0

基于Red Hat的发行版本

  1. #!/bin/sh
  2. #
  3. # nginx - this script starts and stops the nginx daemon
  4. #
  5. # chkconfig:   - 85 15
  6. # description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
  7. #               proxy and IMAP/POP3 proxy server
  8. # processname: nginx
  9. # config:      /etc/nginx/nginx.conf
  10. # config:      /etc/sysconfig/nginx
  11. # pidfile:     /var/run/nginx.pid
  12. # Source function library.
  13. . /etc/rc.d/init.d/functions
  14. # Source networking configuration.
  15. . /etc/sysconfig/network
  16. # Check that networking is up.
  17. [ "$NETWORKING" = "no" ] && exit 0
  18. nginx="/usr/sbin/nginx"
  19. prog=$(basename $nginx)
  20. NGINX_CONF_FILE="/etc/nginx/nginx.conf"
  21. [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
  22. lockfile=/var/lock/subsys/nginx
  23. make_dirs() {
  24. # make required directories
  25. user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
  26. if [ -z "`grep $user /etc/passwd`" ]; then
  27. useradd -M -s /bin/nologin $user
  28. fi
  29. options=`$nginx -V 2>&1 | grep 'configure arguments:'`
  30. for opt in $options; do
  31. if [ `echo $opt | grep '.*-temp-path'` ]; then
  32. value=`echo $opt | cut -d "=" -f 2`
  33. if [ ! -d "$value" ]; then
  34. # echo "creating" $value
  35. mkdir -p $value && chown -R $user $value
  36. fi
  37. fi
  38. done
  39. }
  40. start() {
  41. [ -x $nginx ] || exit 5
  42. [ -f $NGINX_CONF_FILE ] || exit 6
  43. make_dirs
  44. echo -n $"Starting $prog: "
  45. daemon $nginx -c $NGINX_CONF_FILE
  46. retval=$?
  47. echo
  48. [ $retval -eq 0 ] && touch $lockfile
  49. return $retval
  50. }
  51. stop() {
  52. echo -n $"Stopping $prog: "
  53. killproc $prog -QUIT
  54. retval=$?
  55. echo
  56. [ $retval -eq 0 ] && rm -f $lockfile
  57. return $retval
  58. }
  59. restart() {
  60. configtest || return $?
  61. stop
  62. sleep 1
  63. start
  64. }
  65. reload() {
  66. configtest || return $?
  67. echo -n $"Reloading $prog: "
  68. killproc $nginx -HUP
  69. RETVAL=$?
  70. echo
  71. }
  72. force_reload() {
  73. restart
  74. }
  75. configtest() {
  76. $nginx -t -c $NGINX_CONF_FILE
  77. }
  78. rh_status() {
  79. status $prog
  80. }
  81. rh_status_q() {
  82. rh_status >/dev/null 2>&1
  83. }
  84. case "$1" in
  85. start)
  86. rh_status_q && exit 0
  87. $1
  88. ;;
  89. stop)
  90. rh_status_q || exit 0
  91. $1
  92. ;;
  93. restart|configtest)
  94. $1
  95. ;;
  96. reload)
  97. rh_status_q || exit 7
  98. $1
  99. ;;
  100. force-reload)
  101. force_reload
  102. ;;
  103. status)
  104. rh_status
  105. ;;
  106. condrestart|try-restart)
  107. rh_status_q || exit 0
  108. ;;
  109. *)
  110. echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
  111. exit 2
  112. esac

注意修改脚本中的路径。

安装Nginx init脚本

<br\>
添加执行权限:

  1. [root@example.com ~]# chmod +x /etc/init.d/nginx

Debian-based发行版本:

  1. [root@example.com ~]# update-rc.d -f nginx defaults

Red Hat–based发行版本:

    1. [root@example.com ~]# chkconfig nginx on

添加Nginx为系统服务(设置开机启动)的更多相关文章

  1. 源码编译安装nginx及设置开机启动项

    1.上传nginx文档:解压到/data目录下,并安装依赖包tar xf nginx-1.20.1.tar.gz -C /data/cd /data/nginx-1.20.1/ && ...

  2. CentOS7 nginx 最简单的安装以及设置开机启动

    1. 下载tar包. 2. 解压缩tar包 3. 安装必须的部分 yum包 yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd ...

  3. Centos设置开机启动Apache和Mysql[总结]

    1.前言 最近学习搭建wordpress,需要用到apahce和mysql.我是下载源代码进行安装的,安装在/url/local目录下,每次开机都需要手动启动,有点麻烦.如是想设置开机启动,从网上查了 ...

  4. ubuntu下设置开机启动服务

    原文:http://blog.csdn.net/dante_k7/article/details/7213151 在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本 ...

  5. centos7安装docker并设置开机启动

    版本要求:查看内核版本,需大于3.10 [root@localhost ~]# uname -r -.el7.x86_64 更新内核:如果是生产机器务必慎重更新内核,避免出现不必要的问题. sudo ...

  6. openerp 7 在ubuntu上设置开机启动

    我们要让openerp开机运行起来. 第一步,先进入系统目录: cd /etc/init.d 第二步,创建文件.命名为openerp-server sudo vi openepr-server 第三步 ...

  7. [转载]C#设置开机启动

    原理就是在注册表启动项里添加一项.路径:SOFTWARE\Microsoft\Windows\CurrentVersion\Run或者直接:运行->regedit找到这个路径添加一项. usin ...

  8. ubuntu-18.04 设置开机启动脚本-亲测有效

    ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本,通过下列简单设置后,可以使rc.local重新发挥作用. 2.将下列内容复制进rc-local.servi ...

  9. ubuntu-18.04 设置开机启动脚本

    ubuntu-18.04 设置开机启动脚本 参阅下列链接 https://askubuntu.com/questions/886620/how-can-i-execute-command-on-sta ...

随机推荐

  1. 教你控制 RecyclerView 滑动的节奏

    最近,PM升级改版落地页,其中有一个很奇怪的交互需求,需求是这样的: 用户在该页面可以上下无限滑动,但是,在上拉滑动过程中,当内容切换为另一个内容的时候,新的内容先吸顶,然后停止滑动,让用户知道他已经 ...

  2. POJ 3037 Skiing(如何使用SPFA求解二维最短路问题)

    题目链接: https://cn.vjudge.net/problem/POJ-3037 Bessie and the rest of Farmer John's cows are taking a ...

  3. IDEA配置maven(配置阿里云中央仓库)

    前言 idea配置maven后如果不修改中央仓库地址创建maven则出奇的慢,不管你用MyEclipse还是idea都慢的不要不要的,实在不能忍受. 这种条件下发现一个阿里云中央仓库来点福利,有福利了 ...

  4. spline和Pchips的不同(matlab)

    这是一条官方的链接:http://blogs.mathworks.com/cleve/2012/07/16/splines-and-pchips/ 主要是比较在matlab中spline和Pchips ...

  5. CSS图片两端对齐,自适应列表布局末行对齐修复实例页面

    写在前面 前端开发,图片两端对齐,是十分常见的,也是十分痛苦的,我试过好多方法,通过整理,认为下面还是比较靠谱的,在实践中大家可以试试,欢迎一起学习,一起进步 HTML代码 HTML代码非常简单,用的 ...

  6. js 中三元运算符的运用

    外层为false,逐级向内层判断 $scope.nums=700; $scope.result=($scope.nums>300)?($scope.nums>400)?($scope.nu ...

  7. TUM数据集rgbd_benchmark工具的使用方法

    # 在学习视觉slam过程中,需要对数据集合进行预处理和对slam或者跟踪结果进行评价,TUM提供一组这样的工具,为了自己以后方便查找,于是把它记录下来 一.RGBD_Benchmark工具下载链接: ...

  8. 程序员Web面试之前端框架等知识

    基于前面2篇博客: 程序员Web面试之jQuery 程序员Web面试之JSON 您已经可以顺利进入Web开发的大门. 但是要动手干,还需要了解一些已有的前端框架.UI套件,即要站在巨人肩膀上而不是从轮 ...

  9. SVN SVN合并(Merge)与拉取分支(Branch/tag)操作简介

    SVN合并(Merge)与拉取分支(Branch/tag)操作简介 合并(Merge) 例子:把对feature_branch\project_name_v3.3.7_branch的修改合并到deve ...

  10. 导入另一个 Git库到现有的Git库并保留提交记录

    在要合并到的目标git仓库,执行 "git pull  远程分支地址/本地git仓库根目录"