在Linux平台下,控制Nginx服务的启停有多种方法
2.3.1 Nginx服务的信号控制
  在Nginx服务的启停办法中,有一类是通过信号机制来实现的,Nginx服务器的信号控制如下:
  Nginx服务在运行时,会保持一个主进程和一个或多个 worker process 工作进程。通过给Nginx服务的主进程发送信号就可以控制服务的启停了。
  获取nginx主进程的进程号 PID:
  ①Nginx服务启动以后,默认在Nginx服务器安装目录下的logs目录中会产生文件名为 nginx.pid 的文件,此文件中保持的就是Nginx服务主进程的PID.
  这个文件的存放路径和文件名都可以在Nginx服务器的配置文件中进行配置。
  ②使用Linux的查看进程工具 ps  ps -ef | grep nginx
 
 
  Nginx服务主进程能够接收的信号如下:
  TERM或INT:快速停止Nginx服务
  QUIT:平缓停止Nginx服务
  HUP:使用新的配置文件启动进程,之后平缓停止原有进程,就是'平滑重启'
  USR1:重新打开日志文件,常用于日志切割
  USR2:使用新版本的Nginx文件启动服务,之后平缓停止原有Nginx进程,也就是’平滑升级‘
  WINCH:平缓停止 worker process,用于 Nginx 服务器平滑升级
  向Nginx主进程发送信号的两种方法:1⃣️使用nginx二进制文件 2⃣️使用kill命令发送信号
  kill SIGNAL PID
  SIGNAL:指定信号,即QUIT、HUP、TERM或INT、USR1、USR2、WINCH中的某一个
  PID:指定Nginx服务主进程的PID,也可以使用 nginx.pid 动态获取 PID号
  kill SIGNAL 'filepath' filepath为nginx.pid的路径
2.3.2 Nginx服务的启动
  二进制文件nginx的相关用法:
 
 
 
  -h或-? :用来打印二进制文件 nginx 的用法,就是上面显示的内容
  -v :用来显示Nginx服务器的版本号
  -V:除了显示版本号,还显示Nginx服务器编译情况
  -t:检查Nginx服务器配置文件是否有语法错误,可以与 "-c" 联用,使输出内容更详细
  -q与-t 联用:如果配置文件无错误,将不输出上面的内容
  -s signal:向Nginx服务的主进程发送信号
  -p prefix:用来改变Nginx的安装路径。常用在平滑升级Nginx服务器的场合
  -c filename:用来指定启动Nginx服务使用的配置文件
  -g directives:用来补充Nginx配置文件,向Nginx服务指定启动时应用于全局的配置
  使用 ps -ef | grep nginx 查看Nginx服务的进程状态
 
2.3.3 Nginx服务的停止
  停止Nginx服务的两种方法:
    一种是快速停止:快速停止是指立即停止当前Nginx服务正在处理的所有网络请求,马上丢弃连接,停止工作。
    一种是平缓停止:平缓停止是指允许Nginx服务将当前正在处理的网络请求处理完成,但不再接收新的请求,之后关闭连接,停止工作。
  停止Nginx服务的操作:
    发送信号:./sbin/Nginx -g TERM | INT | QUIT -------》TERM 和 INT 信号用于快速停止,QUIT用于平缓停止
  或者:
    kill TERM | INT | QUIT '/Nginx/logs/nginx.pid'
  也可以使用 kill 命令向 Nginx进程发送 -9 或者 SIGNKILL 信号强制关闭 Nginx服务
    kill -9 | SIGKILL '/Nginx/logs/nginx.pid' 不建议这样使用
 
2.3.4 Nginx服务的重启
更改Nginx服务器的配置和加入新模块后,希望当前的Nginx服务应用新的配置或使新模块生效,就需要重启Nginx服务,然后使用新的Nginx配置文件重启服务。
   Nginx服务的平滑重启:
    平滑重启的过程,Nginx服务进程接收到信号后,首先读取新的Nginx配置文件,如果配置语法正确,则启动新的Nginx服务然后平缓关闭旧的服务进程;
    如果新的Nginx配置有问题,将显示错误,仍然使用旧的Nginx进程提供服务。
    使用以下命令实现Nginx服务的平滑重启:
    ./sbin/nginx -g HUP [-c newConfFile]
    HUP信号用于发送平滑重启信号
    newConfFile 可选项,用于指定新配置文件的路径
    或者使用新的配置文件代替了旧的配置文件后,使用如下命令
    kill HUP '/Nginx/logs/nginx.pid' ----也可以实现平滑重启
 
2.3.5 Nginx服务的升级
  如果要对当前的Nginx服务器进行版本升级,应用新模块,最简单的办法是停止当前Nginx服务,然后开启新的Nginx服务,但这样就会导致在一段时间内,用户无法访问服务器。为了解决这个问题,Nginx服务器提供平滑升级的功能
  平滑升级的过程:Nginx服务接收到 USR2 信号后,首先将旧的 nginx.pid文件(如果在配置文件中更改过这个文件的名字,也是相同的过程)添加后缀 .oldbin,变成 nginx.pid.oldbin 文件;然后执行新版本Nginx服务器的二进制文件启动服务。如果新的服务启动成功,系统中将有新旧两个Nginx服务共同提供Web服务。之后,需要向旧的Nginx服务进程发送 WINCH 信号,使旧的Nginx服务平滑停止,并删除 nginx.pid.oldbin文件。在发送 WINCH 信号之前,可以随时停止新的 Nginx服务。
  注意:为了实现Nginx服务器的平滑升级,新的服务器安装路径应该和旧的保持一致。因此在安装新服务器之前先备份旧服务器。由于某些原因无法保证新旧服务器安装路径一致,则可以先使用以下命令将旧服务器的安装路径更改为新服务器的安装路径:
 
  ./Nginx/nginx -p newInstallPath
  newInstallPath为新服务器的安装路径。之后备份旧服务器安装新服务器即可
  做好准备工作后,使用以下命令实现Nginx服务的平滑升级:
  ./sbin/Nginx -g USR2
  其中,USR2信号用于发送平滑升级信号,或者使用:
  kill USR2 '/Nginx/logs/nginx.pid'
  通过 ps -ef | grep nginx 查看新的Nginx服务启动正常,再使用
  ./sbin/Nginx -g WINCH --------其中 WINCH 信号用于发送平滑停止旧服务信号,或者 使用:
  kill WINCH '/Nginx/logs/nginx.pid'
  这样就在不停止提供 Web 服务的前提下完成了 Nginx 服务器的平滑升级
 
 
 
 
 
 
 
 
 
 
 
 
 

2.3 Nginx服务的启停控制的更多相关文章

  1. 批处理脚本学习笔记1--vmware虚拟机启停控制

    起因 因工作需要,在WIN10笔记本上通过vmware workstation装了两台CentOS虚机(CentOS_1.CentOS_2),经常需要进行虚机的启停切换操作,通过vmware的控制台操 ...

  2. hdfs核心主件服务的启停方式

    停止mapreduce服务 /hadoop/hadoop-2.6.4/sbin/stop-yarn.sh 启动mapreduce服务 /hadoop/hadoop-2.6.4/sbin/start-y ...

  3. TFS2017持续发布中调用PowerShell启停远程应用程序

    目前团队项目中有多个Web.服务以及与大数据平台对接接口等应用,每次的发布和部署采用手工的方式进行.停止应用程序,拷贝发布包,启动应用程序,不停的循环着,并且时不时地会出现一些人为错误性问题.这种模式 ...

  4. 编写Redis启停服务脚本

    脚本内容如下; fi   esac   exit$RETVAL 下载脚本:艺搜下载 将下载下来的脚本放在/etc/init.d/目录下 更改脚本权限 chmod 777 /etc/init.d/red ...

  5. Nginx(一)安装及启停

    目录 1 nginx安装 2 nginx启停 我发现很多博客排版杂乱,表达不清,读者看了往往云里雾里.我此前的博客也是如此,我自己很不满意.今起,每一篇博客都会用心写,此前的博客我也会尽力修改.至少要 ...

  6. nginx启停脚本

    安装nginx时,源码包中未带官方的启动脚本,也就无法使用service nginxd start这种启动方式,查了下资料自己写了一个: #!/bin/bash #@version: #@author ...

  7. SHELL编写NGINX服务控制脚本

    使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的 ...

  8. 04. 启停redis服务

    启动 查看redis.conf文件,可以通过general中的说明,配置通过systemd来启停redis和查看redis状态(作者没有采用,而是使用service管理,service配置参考< ...

  9. linux Nginx服务开机自启

    linux Nginx服务开机自启 Nginx 是一个很强大的高性能Web和反向代理服务器.虽然使用命令行可以对nginx进行各种操作,比如启动等,但是还是根据不太方便.下面介绍在linux下安装后, ...

随机推荐

  1. selenium快捷键操作

    常用的键盘操作 send_keys(Keys.BACK_SPACE) 删除键(BackSpace) send_keys(Keys.SPACE) 空格键(Space) send_keys(Keys.TA ...

  2. StarUml3.10 Mac 注册key 破解

    /Applications/StarUML.app/Contents/Resources StarUML是用nodejs写的.确切的说是用Electron前端框架写的.新版本中所有的starUML源代 ...

  3. thinkphp中的exp查询

    今天遇到一个问题,就是在vendor表中查询出vendor_id = vendor_f_id的数据,其实使用原生的sql语句是非常简单的: select * from vendor where ven ...

  4. HTTPS 301错误码 以及 SSL错误

    301 redirect: 301 代表永久性转移(Permanently Moved) 解决方法:修改请求 http 改为 https PHP通过cURL访问https时出现SSL certific ...

  5. elasticsearch 关联单词查询以及Shingles

    Shingle Token Filter A token filter of type shingle that constructs shingles (token n-grams) from a ...

  6. tomcat如何正确的开启远程调试功能(转)

    转自:http://blog.csdn.net/mhmyqn/article/details/49209541 版权声明:本文为博主原创文章,未经博主允许不得转载. 在日常开发中,有时需要对远程服务器 ...

  7. 力扣 ——4Sum (四数之和)python 实现

    题目描述: 中文: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 targe ...

  8. 力扣 -- 寻找两个有序数组的中位数 Median of Two Sorted Arrays python实现

    题目描述: 中文: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums ...

  9. Mac上使用频率最高的七组快捷键

    不管Mac还是Windows,会使用快捷键都能让你的工作效果提升不少,但是快捷键那么多一下子全部记下来也不太实际,这里小编就整理了七组使用频率最高的快捷键,希望可以帮到大家. https://www. ...

  10. js插件-简单拖拽

    前端开发的时候,有好多地方用到拖拽效果,当然 http://jqueryui.com/draggable/  是个不错的选择,but 我是个打破砂锅问到底的人,抽点时间用js小小的实现了类似的插件,话 ...