微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nginx之热部署

Nginx 作为一个反向代理、负载均衡服务器,必须具备高可用的特点,因此 Nginx 支持热部署。
Nginx 的热部署和其并发模型有着密不可分的关系。说白了,就是因为 master 进程的关系。当通知 ngnix 重读配置文件的时候,master 进程会进行语法错误的判断。如果存在语法错误的话,返回错误,不进行装载;如果配置文件没有语法错误,那么 ngnix 也不会将新的配置调整到所有 worker 中。而是,先不改变已经建立连接的 worker,等待 worker 将所有请求结束之后,将原先在旧的配置下启动的 worker 杀死,然后使用新的配置创建新的 worker。
Nginx 作为一个服务器,我们不可能把服务停了在进行配置升级、软件版本升级吧。所以,Nginx 的热部署就极大的方便了我们对服务器软件的升级维护。

1、获取Nginx的安装目录

whereis Nginx@H_404_11@

2、查看原Nginx版本,并获取Nginx的编译参数

cd /usr/local/Nginx

./sbin/Nginx -V         #大写V@H_404_11@

Nginx version: Nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/Nginx --user=Nginx --group=Nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-openssl=/opt/openssl-1.0.2r --with-stream --with-stream_ssl_module

3、到官网下载最新版本的Nginx (下载地址:http://nginx.org/en/download.html)

cd /opt 

wget http://Nginx.org/download/Nginx-1.15.0.tar.gz@H_404_11@

4、编译新版Nginx-1.15.0(注意:/opt/openssl-1.0.2r 提前下载并解压好)

tar xf Nginx-1.15.0.tar.gz

cd Nginx-1.15.0

.configure --prefix=/usr/local/Nginx --user=Nginx --group=Nginx \
--with-http_ssl_module --with-http_flv_module \
--with-http_stub_status_module --with-http_gzip_static_module \
--with-http_realip_module --with-openssl=/opt/openssl-1.0.2r \
--with-stream --with-stream_ssl_module

make         # 这里只编译不安装,不要执行make install 命令,编译后的Nginx文件在/objs/目录下@H_404_11@

5、备份旧版本的Nginx的执行程序

mv /usr/local/Nginx/sbin/Nginx  /usr/local/Nginx/sbin/Nginx.old@H_404_11@

6、替换旧的Nginx的执行程序

cp -a /opt/Nginx-1.15.0/objs/Nginx /usr/local/Nginx/sbin/@H_404_11@

7、发送USR2信号给旧版本主进程号,使Nginx的旧版本停止接收请求,用Nginx新版本接替,且老进程处理完所有请求,关闭所有连接后,停止

kill -USR2 cat /var/run/Nginx/Nginx.pid@H_404_11@

8、查看Nginx pid目录,多了个Nginx.pid.oldbin文件,存放了旧版本Nginx的pid号

ls -l  /usr/local/Nginx/logs/@H_404_11@

...
Nginx.pid
Nginx.pid.oldbin
...

9、从容关闭旧进程

kill -QUIT cat /var/run/Nginx/Nginx.pid.oldbin@H_404_11@

10、查看升级后的版本

./usr/local/Nginx/sbin/Nginx -v              #小写v@H_404_11@

Nginx version: Nginx/1.15.0

至此,Nginx热部署完成了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐