Nginx之热部署

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

一、获取原nginx的安装目录

whereis nginx

二、查看原nginx版本,并获取原nginx的编译参数

cd /usr/local/nginx

./sbin/nginx -V         #大写V

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_modulenginx

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

cd /opt 

wget http://nginx.org/download/nginx-1.15.0.tar.gz

四、编译新版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/目录下

五、备份旧版本的nginx的执行程序

mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.old

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

cp -a /opt/nginx-1.15.0/objs/nginx /usr/local/nginx/sbin/

七、发送USR2信号给旧版本主进程号,使nginx的旧版本中止接收请求,用nginx新版本接替,且老进程处理完全部请求,关闭全部链接后,中止

kill -USR2 cat /var/run/nginx/nginx.pid

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

ls -l  /usr/local/nginx/logs/

...
nginx.pid
nginx.pid.oldbin
...服务器

九、从容关闭旧进程

kill -QUIT cat /var/run/nginx/nginx.pid.oldbin

十、查看升级后的版本

./usr/local/nginx/sbin/nginx -v              #小写v

nginx version: nginx/1.15.0并发

至此,nginx热部署完成了。负载均衡

相关文章
相关标签/搜索