Nginx教程

Nginx 热部署

本文主要是介绍Nginx 热部署,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Nginx 热部署

依赖

编译依赖

sudo apt install make gcc build-essential

Nginx 依赖

wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -xvf  zlib-1.2.11.tar.gz

wget wget https://ftp.pcre.org/pub/pcre/pcre-8.44.zip
unzip pcre-8.44.zip

安装 1.18

编译安装 1.18

wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -xvf nginx-1.18.0.tar.gz

cd nginx-1.18.0
./configure --with-pcre=/home/wyj/Downloads/pcre-8.44 --with-zlib=/home/wyj/Downloads/zlib-1.2.11

make
sudo make install

sudo /usr/local/nginx/sbin/nginx

查看进程 ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'

PID    PPID USER     %CPU    VSZ WCHAN  COMMAND
2313       1 root      0.0   4128 -      nginx: master process /usr/local/nginx/sbin/nginx
2315    2313 nobody    0.0   4804 -      nginx: worker process
  1. Nginx 的 master 进程ID 2313
  2. Nginx 有一个 work 进程,进程ID 2315

升级 1.20

编译 1.20

wget http://nginx.org/download/nginx-1.20.0.tar.gz
tar -xvf nginx-1.20.0.tar.gz

cd nginx-1.20
./configure --with-pcre=/home/wyj/Downloads/pcre-8.44 --with-zlib=/home/wyj/Downloads/zlib-1.2.11

make

备份旧的 Nginx 可执行文件, 并复制新的可执行文件

sudo mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
sudo cp objs/nginx /usr/local/nginx/sbin/nginx

升级可执行文件

sudo kill -s USR2 2313

查看进程 ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'

PID    PPID USER     %CPU    VSZ WCHAN  COMMAND
2313       1 root      0.0   4128 -      nginx: master process /usr/local/nginx/sbin/nginx
2315    2313 nobody    0.0   4804 -      nginx: worker process
2965    2313 root      0.0   4144 -      nginx: master process /usr/local/nginx/sbin/nginx
2968    2965 nobody    0.0   4828 -      nginx: worker process

升级后续操作

成功

升级成功后续操作(确保真的升级成功):

  1. 关闭旧的 work 进程
  2. 关闭旧的 master 进程
  3. 删除旧的 Nginx 可执行文件
sudo kill -s WINCH 2313

sudo kill -s QUIT 2313

sudo rm /usr/local/nginx/sbin/nginx.old

失败

升级失败后的操作:

  1. 重启 nginx 服务
  2. 关闭新的 nginx 服务
  3. 删除新的 Nginx 可执行文件
  4. 恢复旧的 nginx 可执行文件

重新拉起旧的 nginx 服务

sudo kill -s HUP 2313

关闭新的 nginx 服务

sudo kill -s QUIT 2965

删除新的 Nginx 可执行文件, 并恢复旧的

sudo rm /usr/local/nginx/sbin/nginx
sudo mv /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx

信号

Master 进程

master 进程支持以下信号:

  • TERM, INT 快速关闭服务
  • QUIT 优雅关闭服务
  • HUP 使用新配置启动新工作进程,正常关闭旧工作进程
  • USR1 日志切割
  • USR2 升级可执行文件
  • WINCH 优雅关闭 worker 进程

Worker 进城

  • TERM, INT
  • QUIT
  • USR1
  • WINCH

参考文献:

Controlling nginx

这篇关于Nginx 热部署的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!