在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. Ubuntu解压缩rar格式文件

    解压缩rar文件时,出现问题 解决方法: sudo apt-get install unrar

  2. 安装Consul服务中心

    安装Consul服务中心 首先下载对应版本的安装程序.点击下载 我下载的是macOS64位版本,下载文件是一个ZIP文件,下载后解压缩到一个你喜欢的位置,以开发模式启动consul服务: #进入con ...

  3. PHPStorm remoteHost链接FTP成功,但不显示文件目录

    ============================================== 勾上前两个选项就可以了

  4. HDU 2815 Mod Tree (扩展 Baby Step Giant Step )

    Mod Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. map hashmap的使用

    package map; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * Map的实现 ...

  6. [web设计]带有方向感应的hover effect

    See the Pen bdxLQa by jeremylee (@lijie33402) on CodePen. codepen不知道怎么嵌入到cnblogs..待编辑 参考资料 参考博客

  7. ECUST_Algorithm_2019_4

    简要题意及解析 1001 第三次作业原题,略. 1002 把一个数转换为二进制. 不断除以\(2\)取余就好了.写递归代码会非常短. 时间复杂度\(O(Tlogn)\) \(T\)是数据组数,\(n\ ...

  8. Anaconda 安装 pytorch报错解决方法

    一.安装Pytorch: # -c 指定用pytorch镜像源下载软件conda install pytorch torchvision cpuonly -c pytorch 报错: 二.配置: ch ...

  9. bzoj 3626

    http://www.lydsy.com/JudgeOnline/problem.php?id=3626 让我比较惊讶的一道链剖裸题(' '    ) 做法很精妙 首先我们考虑对于单个询问时可以拆分成 ...

  10. tp3.2控制器返回时关闭子窗口刷新父页面

    我的项目操作都是在子页面弹窗中执行,当我操作成功或失败时,都要关闭当前子窗口,刷新父页面: $this->assign('jumpUrl',"javascript:window.par ...