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)