热部署主要是是安装目录下objs目录的替换。详细安装可以参考https://www.jianshu.com/p/0237227b9bd4。
这里有2个假设。当前系统的nginx安装在/usr/local/nginx下。
准备下载的nginx,解压缩在/home/owen/nginx-1.16.0下
1. 在nginx 官方下载最新包,wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar -zxvf nginx-1.16.0.tar.gz
configure make make install后。会生成objs文件。
2. copy nginx 到准备热部署的目录下,注意先备份目标目录下的nginx。
mv /usr/local/nginx/sbin/ngin /usr/local/nginx/sbin/nginx_backup
3. cp 最新的nginx到准备替换的目录下。 cp /home/owen/nginx-1.16.0/objs/nginx /usr/local/nginx/sbin/
4. 通知当前在运行的nginx,系统要进行热部署。查看/usr/local/nginx/logs/nginx.pid,得到进程号为32438(你需要看你自己目录的进程)
执行命令 kill -USR2 32438
ps -ef | grep nginx 会发现目前系统中有2个nginx在运行,此时需要告诉32438 进程的nginx 优雅的关闭。
kill -WINCH 32438
这样nginx热部署就成功了。
nginx winch后,旧的nginx进程并没有关闭。剩下可以reopon回来。