Nginx 热部署

布满荆棘的人生 2023-01-17 03:29 150阅读 0赞

Nginx 热部署

依赖

编译依赖

  1. sudo apt install make gcc build-essential

Nginx 依赖

  1. wget http://www.zlib.net/zlib-1.2.11.tar.gz
  2. tar -xvf zlib-1.2.11.tar.gz
  3. wget wget https://ftp.pcre.org/pub/pcre/pcre-8.44.zip
  4. unzip pcre-8.44.zip

安装 1.18

编译安装 1.18

  1. wget http://nginx.org/download/nginx-1.18.0.tar.gz
  2. tar -xvf nginx-1.18.0.tar.gz
  3. cd nginx-1.18.0
  4. ./configure --with-pcre=/home/wyj/Downloads/pcre-8.44 --with-zlib=/home/wyj/Downloads/zlib-1.2.11
  5. make
  6. sudo make install
  7. sudo /usr/local/nginx/sbin/nginx

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

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

升级 1.20

编译 1.20

  1. wget http://nginx.org/download/nginx-1.20.0.tar.gz
  2. tar -xvf nginx-1.20.0.tar.gz
  3. cd nginx-1.20
  4. ./configure --with-pcre=/home/wyj/Downloads/pcre-8.44 --with-zlib=/home/wyj/Downloads/zlib-1.2.11
  5. make

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

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

升级可执行文件

  1. sudo kill -s USR2 2313

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

  1. PID PPID USER %CPU VSZ WCHAN COMMAND
  2. 2313 1 root 0.0 4128 - nginx: master process /usr/local/nginx/sbin/nginx
  3. 2315 2313 nobody 0.0 4804 - nginx: worker process
  4. 2965 2313 root 0.0 4144 - nginx: master process /usr/local/nginx/sbin/nginx
  5. 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 服务

  1. sudo kill -s HUP 2313

关闭新的 nginx 服务

  1. sudo kill -s QUIT 2965

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

  1. sudo rm /usr/local/nginx/sbin/nginx
  2. 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

发表评论

表情:
评论列表 (有 0 条评论,150人围观)

还没有评论,来说两句吧...

相关阅读

    相关 部署

    1. 把springloaded-1.2.5.RELEASE.jar放到tomcat的bin文件夹下 2. 打开bin下的catalina.bat,添加 set

    相关 SpringBoot部署

    一、什么是热部署 热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。 二、Sprin