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中使用lua脚本的方法

    nginx中使用lua脚本的方法

    这篇文章主要介绍了nginx中使用lua脚本的方法,本文介绍通过第三方模块lua-nginx-module实现lua脚本在nginx的调用,并附一个配置例子,需要的朋友可以参考下
    2014-07-07
  • Nginx配置同一个域名同时支持http与https两种方式访问实现

    Nginx配置同一个域名同时支持http与https两种方式访问实现

    这篇文章主要介绍了Nginx配置同一个域名同时支持http与https两种方式访问实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • nginx中proxy_pass各种用法详解

    nginx中proxy_pass各种用法详解

    nginx中配置location代理转发规则的时候不同写法对应不同转发规则。本文就介绍几种常见的匹配情况,感兴趣的可以了解一下
    2021-11-11
  • nginx上设置html不缓存的方法实现

    nginx上设置html不缓存的方法实现

    前端项目发布以后,经常会遇到访问不到最新的版本,这主要是由于我们项目的入口文件index.html被浏览器或者代理缓存了,本文主要介绍了nginx上设置html不缓存,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • nginx服务器access日志中大量400 bad request错误的解决方法

    nginx服务器access日志中大量400 bad request错误的解决方法

    这篇文章主要介绍了nginx服务器access日志中大量400 bad request错误的解决方法,本文结论是空主机头导致的大量400错误日志,关闭默认主机的日志记录就可以解决问题,需要的朋友可以参考下
    2015-01-01
  • Nginx中alias指令的实现

    Nginx中alias指令的实现

    lias指令用于指定一个替换位置,该替换位置会替换掉location块中指定的URl,下面就来介绍一下alias指令,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • nginx中root和alias指令的使用

    nginx中root和alias指令的使用

    这篇文章主要介绍了nginx中root和alias指令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • angular6+springboot实现前后分离nginx配置

    angular6+springboot实现前后分离nginx配置

    这篇文章主要介绍了angular6+springboot实现前后分离nginx配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • docker运行Nginx及配置方法

    docker运行Nginx及配置方法

    这篇文章主要介绍了docker运行Nginx及配置方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 配置nginx访问本地静态资源,本地图片,视频教程

    配置nginx访问本地静态资源,本地图片,视频教程

    文章介绍了如何配置Nginx以访问本地静态资源、图片和视频,首先,进入Nginx安装目录并打开`nginx.conf`文件,添加一个新的`server`配置来指定本地路径,然后,通过命令行重启Nginx服务以应用更改,最后,通过浏览器访问配置的图片路径来验证配置是否成功
    2025-01-01

最新评论