Nginx 安装新模块

流程

  • 将旧Nginx文件换成新Nginx文件
  • 向master进程发送USR2信号
  • master进程修改pid文件名,加后缀.oldbin
  • master进程用新Nginx文件启动新master进程
  • 向老master进程发送QUIT信号,关闭老master进程
    • 回滚:向老master进程发送HUP,向新master进程发送QUIT

操作

  • 下载并解压安装包
  • 查询之前 nginx 已安装模块
1
2
3
4
5
6
7
$ sudo ./nginx -V
Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/platform/tengine --with-jemalloc
  • 编译新的安装包
1
2
3
# 编译时注意,旧 nginx 编译的参数,仍应追加上
$ ./configure --prefix=/usr/local/platform/tengine --add-module=modules/ngx_http_upstream_check_module --with-jemalloc
$ make
  • 备份旧二进制文件,移动新二进制文件至 bin 目录下
1
2
$ cd /usr/local/platform/tengine/sbin
$ mv nginx nginx.old
  • 更新
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Tengine
$ cd ~/tengine-2.3.2
$ make upgrade

# OpenResty
## 获取当前 OpenResty PID
$ ps aux |grep openresty
## 向当前 OpenResty PID 发送 USR2 信号,用新 OpenResty 拉起进程
$ kill -USR2 3152152
## 验证新进程没问题后,向可关闭的进程发送 QUIT 信号
$ kill -QUIT 3152152