Nginx基本命令&不停机版本升级

 更新时间:2023年08月30日 10:53:27   作者:fkjavaer  
这篇文章主要为大家介绍了Nginx基本命令&不停机版本升级,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Nginx基本命令&不停机版本升级

在上一篇文章【Linux】Ubuntu安装Nginx(在线安装&源码编译安装)中,我们已经通过源码编译安装nginx,其nginx执行文件的地址为:/usr/local/nginx

Nginx工作模型

我们先来看看nginx启动之后的进程情况:

 ps -ef|grep nginx
 
 # 输出结果
 root        1036       1  0 02:33 ?        00:00:00 nginx: master process ./nginx
 nobody      1037    1036  0 02:33 ?        00:00:00 nginx: worker process

可以看到,目前运行的nginx存在一个master进程和一个worker进程,它们有着明确的分工:

  • master进程:读取和评估配置。
  • worker进程:处理请求,工作进程的数量可以在配置文件中定义。

 nginx采用基于事件的模型并依赖于操作系统的机制高效地在工作进程之间分发请求。

Nginx基本命令

nginx命令

一般所有的软件,都有类似于help的指令,nginx中我们使用nginx -h或者nginx -?即可进行查看。

 # 先进入nginx执行文件目录
 cd /usr/local/nginx
 # ./nginx -h
 Options:
   -?,-h         : this help
   -v            : show version and exit
   -V            : show version and configure options then exit
   -t            : test configuration and exit
   -T            : test configuration, dump it and exit
   -q            : suppress non-error messages during configuration testing
   -s signal     : send signal to a master process: stop, quit, reopen, reload
   -p prefix     : set prefix path (default: /usr/local/nginx/)
   -c filename   : set configuration file (default: /usr/local/nginx/nginx.conf)
   -g directives : set global directives out of configuration file

可以看到,nginx为我们列出了参数指令的含义。

参数

含义

-?,-h

查看帮助信息

-v

查看nginx版本

-V

查看nginx版本以及配置选项

-t

测试配置文件语法是否正确

-T

测试配置文件语法是否正确,并输出配置内容

-q

测试配置文件过程中不显示非错误信息

-s

向master进程发送命令,stop:快速关闭,quit:优雅关闭,reopen:重新打开日志,reload:重新加载配置文件

-p

设置nginx执行路径,默认为/usr/local/nginx/

-c

以指定配置文件启动(
/usr/local/nginx/nginx.conf)

-g

从设置配置文件中全局指令(./nginx -g "pid logs/new.pid",便可以在启动nginx时修改配置文件中的默认配置)

在工作中,可能经常涉及到配置文件的修改,因此,使用比较多的命令:

 nginx -t

修改配置文件后,先测试配置文件语法的正确性

 nginx -s reload

修改配置文件后,通知master进程重新加载配置文件,master进程会启动新的worker进程,并向旧的worker进程发送关闭命令,旧的worker进程收到关闭命令后,停止接收新的连接直到当前工作结束后退出。

kill命令

除了使用nginx命令,我们还可以通过kill命令向nginx的master进程和worker进程发送信号,其中某些命令的效果与执行nginx -s signal的效果是一样的。

master进程支持的信号:

信号

含义

TERM, INT

快速关闭。与nginx -s stop效果一致。kill -s TERM pid,kill -s INT pid

QUIT

优雅关闭。与nginx -s quit效果一致。kill -s QUIT pid

HUP

重新加载配置,与nginx -s reload效果一致。kill -s HUP pid

USR1

重新打开日志。kill -s USR1 pid

USR2

升级nginx可执行文件,可以用来不停机升级nginx版本。kill -s USR2 pid

WINCH

优雅关闭worker进程。kill -s WINCH pid

worker进程支持的信号:

信号

含义

TERM, INT

快速关闭。kill -s TERM pid,kill -s INT pid

QUIT

优雅关闭。kill -s QUIT pid

USR1

重新打开日志。kill -s USR1 pid

WINCH

调试异常终止。kill -s WINCH pid

Nginx版本升级

1)查看当前版本

 ./nginx -v
 nginx version: nginx/1.18.0

2)准备新版本

下载链接:
http://nginx.org/download/nginx-1.22.1.tar.gz

3)解压缩

 tar zxvf nginx-1.22.1.tar.gz

4)设置configure

 cd /home/stone/nginx-1.22.1/
 sudo ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid

5)编译

 sudo make

升级过程,只需要编译,不需要安装,否则会覆盖已经安装的版本

6)查看新编译的版本

 cd objs/
 ls
 autoconf.err  Makefile  nginx  nginx.8  ngx_auto_config.h  ngx_auto_headers.h  ngx_modules.c  ngx_modules.o  src

可以看到,该目录下也存在一个nginx文件,运行nginx -v查看

 ./nginx -v
 nginx version: nginx/1.22.1

7)备份原nginx可执行文件

如果后续升级失败,还可以进行版本回滚

 cd /usr/local/nginx
 sudo mv nginx nginx.bak

8)复制新的nginx可执行文件进行替换

 cd /home/stone/nginx-1.22.1/objs
 sudo cp nginx /usr/local/nginx/

9)查看当前nginx进程

 ps -ef|grep nginx
 # 输出结果
 root        3253       1  0 11:07 ?        00:00:00 nginx: master process ./nginx
 nobody      3254    3253  0 11:07 ?        00:00:00 nginx: worker process
 stone      24596    3181  0 13:50 pts/1    00:00:00 grep --color=auto nginx

10)执行升级命令

 sudo kill -s USR2 `more /usr/local/nginx/nginx.pid`

再次查看nginx进程,可以看到创建了新的master进程和worker进程,与此同时,也是将旧版本的nginx的pid保存到nginx.pid.oldbin中。

 ps -ef|grep nginx
 # 输出结果
 root        3253       1  0 11:07 ?        00:00:00 nginx: master process ./nginx
 nobody      3254    3253  0 11:07 ?        00:00:00 nginx: worker process
 root       25675    3253  0 13:53 ?        00:00:00 nginx: master process ./nginx
 nobody     25676   25675  0 13:53 ?        00:00:00 nginx: worker process

我们可以查看一下这个文件,确实,其记录了旧版本的master进程pid

 cat /usr/local/nginx/nginx.pid.oldbin 
 3253

此时,所有的worker进程(包括新的和旧的)继续接收请求,我们可以向旧版本的master进程发送WINCH命令以关闭其worker进程。

 sudo kill -s winch `cat /usr/local/nginx/nginx.pid.oldbin`

再次查看nginx进程,旧版本的worker进程已经优雅退出,只剩下master进程。

 ps -ef|grep nginx
 root        3253       1  0 11:07 ?        00:00:00 nginx: master process ./nginx
 root       25675    3253  0 13:53 ?        00:00:00 nginx: master process ./nginx
 nobody     25676   25675  0 13:53 ?        00:00:00 nginx: worker process

如果新版本的worker进程运行正常,那么我们就可以向旧版本的master进程发送QUIT命令优雅退出。

 sudo kill -s quit `cat /usr/local/nginx/nginx.pid.oldbin`

到这里,我们的nginx版本也就在不停机的情况下平滑升级完成了。

以上就是Nginx基本命令&不停机版本升级的详细内容,更多关于Nginx命令不停机版本升级的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:

相关文章

  • nginx http重定向https配置说明

    nginx http重定向https配置说明

    这篇文章主要介绍了nginx http重定向https配置说明的相关资料,需要的朋友可以参考下
    2017-04-04
  • nginx 版本升级的实现方法

    nginx 版本升级的实现方法

    文介绍了如何在CentOS7服务器上无中断地将Nginx从1.18.0版本升级到1.19.7版本,提供了两种升级方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • Nginx配置负载均衡时访问地址无法生效的解决方法

    Nginx配置负载均衡时访问地址无法生效的解决方法

    本文主要介绍了Nginx配置负载均衡时访问地址无法生效的解决方法,例如负载均衡策略的设置是否正确、是否存在拼写错误等,下面就来详细的介绍一下,感兴趣的可以了解一下
    2023-09-09
  • CentOS 中Nginx的安装方法

    CentOS 中Nginx的安装方法

    最近研究LNMP,首先要在linux下配置nginx服务器,废话少说,下面给大家分享下在CentOS 中Nginx的安装方法
    2017-08-08
  • Nginx 配置过程的具体步骤

    Nginx 配置过程的具体步骤

    这篇文章主要介绍了Nginx 配置过程的详细介绍的相关资料,希望通过本文能帮助到大家,让大家掌握如何配置Nginx,需要的朋友可以参考下
    2017-10-10
  • Nginx服务器下防盗链的方法介绍

    Nginx服务器下防盗链的方法介绍

    这篇文章主要介绍了Nginx服务器下防盗链的方法介绍,主要通过修改服务器的配置文件来实现,需要的朋友可以参考下
    2015-07-07
  • Nginx proxy、rewrite、alias配置过程

    Nginx proxy、rewrite、alias配置过程

    这篇文章主要介绍了Nginx proxy、rewrite、alias配置过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Linux中安装Nginx的正确步骤

    Linux中安装Nginx的正确步骤

    这篇文章主要给大家介绍了关于在Linux中安装Nginx的正确步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Nginx服务LNMP之WordPress部署流程步骤

    Nginx服务LNMP之WordPress部署流程步骤

    这篇文章主要为大家介绍了Nginx服务LNMP之WordPress部署流程步骤,本实验意在部署过程,使用单机版部署,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-03-03
  • Nginx反向代理后端服务的操作步骤

    Nginx反向代理后端服务的操作步骤

    反向代理是一种代理服务器,位于客户端与服务器之间,后端服务器处理请求后将响应发送回反向代理服务器,反向代理服务器再将响应返回给客户端,本文将详细介绍Nginx如何反向代理后端服务,涵盖其基本概念、配置方法、负载均衡、SSL/TLS支持等多个方面,需要的朋友可以参考下
    2024-06-06

最新评论