nginx命令
指定配置文件:-c
指定配置指令:-g
指定运行目录:-p
发送信号:-s(stop、quit、reload、reopen)
测试语法:-t、-T
热部署
查看目前正在运行的nginx:
ps -ef | grep nginx
将当前nginx命名为nginx.old,并将新的二进制文件移动到这里
cp nginx nginx.old
cp xxxx/nginx nginx
向老的nginx master进程发送 USR2
, 387 为老nginx matser进程号。
kill -USR2 387
这时会新启一个 nginx matser进程,此时可以看到 新老nginx master、worker进程都会存在,但老的worker进程已经不会监听8080端口了。
此时可以向老的nginx mater进程发送 WINCH
信号,通知其可以关闭worker进程了。
kill -WINCH 387
通过 ps -ef | grep nginx
会看到新老matser进程共存,这主要是为了 新进程出现问题时可以进行版本回退。
热回退
假设目前运行版本为 1.19.0, 进程号为18944
需要回退至 1.14,进程号为 19476
二进制回退
cp nginx.old nginx
唤起回退版本nginx
kill -HUP 19476 // 唤起旧进程
ps -ef | grep nginx
kill -USR2 18944 // 新版本的master进程的worker线程不再接收新的用户请求
ps -ef | grep nginx
kill -WINCH 18944 // 关闭新版本master进程的两个worker进程
查看目前生效的nginx
$ curl -I 127.0.0.1:8080
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Sun, 28 Nov 2021 12:35:26 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sat, 06 Nov 2021 04:26:25 GMT
Connection: keep-alive
ETag: "618603f1-264"
Accept-Ranges: bytes
由上可知,版本已经回退成功。