在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. git使用记录二: 给文件重命名的简单方法

    git使用记录三: 给文件重命名的简单方法 git mv file_name_old file_name_new mv: 文件命名 file_name_old : 文件当前的名字 file_name_ ...

  2. 购物车1.0版——python第5天

    # 输出商品列表,用户输入序号,显示选中商品名称# 商品li = ['手机', '电脑', '耳机', '键盘', '鼠标']# 要求:1.页面显示序号+商品名称如下# 1 手机# 2 电脑# 3 耳 ...

  3. static关键字_1

    static关键字   1.在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所以对象来说,static成员变量只有一份. 2.用static声 ...

  4. ctDNA的分析理论上也可以为多样性的肿瘤

    导语 肺腺癌(LUAD)和肺鳞癌(LUSC)是最常见的非小细胞肺癌类型.循环肿瘤DNA(ctDNA)是由凋亡或坏死的肿瘤细胞释放并在血液中循环的小片段DNA.与常规肿瘤活检相比,ctDNA检测具有一定 ...

  5. run (简单DP)

    链接:https://www.nowcoder.com/acm/contest/140/A 来源:牛客网 题目描述 White Cloud is exercising in the playgroun ...

  6. Docker镜像仓库的搭建--> Harbor篇

    简介 Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址:https://github.com/goharbor/harbor Harbor作为一个企业级私有R ...

  7. C#@字符的使用

    一,在字符串中的使用 //当在字符串前面加上一个@字符的时候,我们就可以把一个字符串定义在多行 // 编译器不会再去识别字符串中的转义字符 // 如果需要在字符串中表示一个双引号的话,需要使用两个双引 ...

  8. SQL数据库—<2>数据库基本操作(CRUD)

    学习基本操作语句之前先简单了解数据库的基本数据类型: 数据类型:    二进制数据:以十六进制形式存储        固定长度:binary        可变长度:varbinary    字符数据 ...

  9. SHELL自动化--接口测试

    #!/bin/bash fileNum=`ls /bin/testShell/apiCheck_shell/logs/ | grep $(date "+%Y-%m-%d") | w ...

  10. 转载:tomcat过程原理

    基于Java的Web 应用程序是 servlet.JSP 页面.静态页面.类和其他资源的集合,它们可以用标准方式打包,并运行在来自多个供应商的多个容器.Web 应用程序存在于结构化层次结构的目录中,该 ...