实现热部署(在线升级):
热部署方案一 (有弊端,不利于回滚)
查看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