一、 官网下载 openresty
阿里云优惠链接:阿里云·云小站
下载2个版本后面我们给它升级
wget https://openresty.org/download/openresty-1.13.6.2.tar.gz
wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
二、 安装
依赖: yum install -y gcc make pcer pcre-devel openssl openssl-devel
tar -zxf openresty-1.13.6.2.tar.gz
tar -zxf openresty-1.15.8.1.tar.gz
预编译:
./configure --prefix=/usr/local/openresty \
--with-pcre-jit \
--with-ipv6 \
--without-http_redis2_module \
--with-http_iconv_module \
-j8
j8 就是8CPU
编译安装
gmake && gmake install
启动openresty 默认情况下会指定 nginx启动二进制文件做一个软链到了/uar/local/openresty/bin/openresty 你可以使用这个文件去去启动效果是一样的。
执行 /usr/local/openresty/nginx/sbin/nginx
我们可以查看版本/usr/local/openresty/nginx/sbin/nginx -v
nginx version: openresty/1.13.6.2
三、热部署
启动nginx后我们再去编译一个新的nginx
cd penresty-1.15.8.1 进行编译,编译参数如果没有变化的话可以使用原来的。
注意不要install 而是 gmake 就可以了
编译完成后会生产nginx 的二进制可执行文件:/root/openresty-1.15.8.1/build/nginx-1.15.8/objs/nginx ,我们用它来替换现有的nginx 文件。
把原来的nginx 二进制文件重命名
mv /usr/local/openresty/nginx/sbin/nginx /usr/local/openresty/nginx/sbin/nginx.old
cp /root/openresty-1.15.8.1/build/nginx-1.15.8/objs/nginx /usr/local/openresty/nginx/sbin/
最后进行热部署操作:
通过给老的master 进程发送命令进行版本升级,发送 USR2信号
kill -USR2 16495
这个时候会同时存在2个master进程,同时老的work进程依旧存在但是老的进程已经不再监听80或者443端口了:
如何让老的work 进程优雅退出呢?
我们给老的master进程发送一个信号WINCH : kill -WINCH 16495
这个时候老的master 进程是没有退出的,方便我们做版本回退,对老的master发送reload 命令可以快速回滚
其实不用发送WINCH 命令,发送QUIT 信号让老的master 退出就可以了。
kill -QUIT 16495 优雅停止老的master进程 ,退出的话就不能像使用reload 命令回滚,如果要回滚必须使用USR2 信号进行更新操作。