nginx虚拟机及热部署(在线升级)

实现热部署(在线升级):
热部署方案一 (有弊端,不利于回滚)
查看nginx版本及源编译差数:
/usr/local/nginx/sbin/nginx -V

 

预编译/ 编译/ 安装:在预编译之前,先删除之前生成的Makefile文件,保存干净 也可不删除:
cd nginx-1.16.0
make clean
echo-nginx-module-0.61.tar.gz (需手动上传)
mv /usr/src/echo-nginx-module-0.61.tar.gz /usr/src/echo-nginx-module
预编译-添加echo-nginx-module模块(添加前模块需要和之前的一致)
./configure --prefix=/usr/local/nginx --with-http_stub——status_module --with-http_ssl_module --add-module=/usr/src/echo-nginx-module
编译 安装
make &&make install
/usr/local/nginx/sbin/nginx -V
进行升级
make upgrade

 

 

热部署方案二 (更谨慎的操作,随时可回滚):
查看原版本参数及编译安装均与热部署一相同
/usr/local/nginx/sbin/nginx -V
cd /usr/src/nginx-1.16.0
删除之前Makefile文件
make clean
进行预编译
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../echo-nginx-module
编译/ 安装
make && make install

 

 

启动nginx服务/查看进程:

/usr/local/nginx/sbin/nginx 
ps -ef|grep nginx
查看nginx.pid master老进程
cat /usr/local/nginx/logs/nginx.pid
向master进程xxxxx(进程id) 请求 生成新的进程
kill -USR2 xxxxx

 

 

优雅退出老master进程

向老master进程发信号 xxxxx优雅退出, 新master进程xxxxx起来:
kill -WINCH xxxxx
ps -ef|grep nginx

 

 

快泽/回滚:

重新拉起老master进程:
kill -HUP xxxxx
退出新的master进行:
kill -QUIT xxxxx

 

 

热部署三:
下载源码包:
wget http://www.nginx.org/download/nginx-1.14.2.tar.gz
获取旧版本号
/usr/local/nginx/sbin/nginx -V
解压 编译新版本的nginx 与旧版本的参数相同,不加上旧版本的参数,旧的版本参数不可用:

tar xf nginx-1.14.2.tar/gz
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
编译/ 安装  (这里我选择编译不安装)
make
下图是编译安装自动生成的文件 效果

 

备份旧版本的nginx可执行文件, 复制新版本的nginx执行文件 (默认编译安装时已复制过去, 如果没有编译安装 自己手动复制)

mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.old
cp objs/nginx  /usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -v
/usr/local/nginx/sbin/nginx.old -v

 

 

 

 

 

 

平滑重启动测试:

/usr/local/nginx/sbin/nginx -s reload
/usr/local/nginx/sbin/nginx -v

 

 

 

 

posted on 2020-10-11 19:50  蜂蜜log  阅读(222)  评论(0编辑  收藏  举报

导航