Nginx热部署如何实现


小编给大家分享一下Nginx热部署如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有免费云主机域名收获,下面让我们一起去了解一下吧!关闭防火墙,让本地可以通过浏览器访问Nginx服务。查看信号量:有64种信号量,以下是几种常用的信号量:SIGINTSIGTERM:快速关闭。SIGQUIT:从容关闭(优雅的关闭进程,即等请求结束后再关闭)。SIGHUP:平滑重启,重新加载配置文件 (平滑重启,修改配置文件之后不用重启服务器)。SIGUSR1 :重新读取日志文件,在切割日志文件时用途较大。SIGUSR2:平滑升级可执行程序 ,nginx升级时候用。SIGWINCH :从容关闭工作进程。Nginx是一个多进程的高性能反向代理服务器,包含一个master进程和多个worker进程(worker进程的数量可以通过nginx.conf配置文件中的worker_processes参数进行设置,默认1个),这样可以充分利用多核处理器。
默认1worker进程。

并且master进程和worker进程是父子进程关系。
Nginx工作模式为多进程,Nginx在启动之后会有一个master进程和多个worker进程(默认1个),多个worker子进程将监听master父进程监听的端口(参考父子进程的关系),并行处理请求。master父进程主要用来管理worker子进程(管理真正提供服务的worker进程,向worker进程发送信号,监控worker进程的运行状态,当worker进程异常退出后,会重新启动新的worker进程),读取并验证配置信息,master进程不会对用户请求提供服务,而用户请求是由worker进程进行处理。Nginx是通过信号量来控制,比如停止和重启Nginx。信号量是进程间通信的一种机制,master主进程控制多个worker子进程,也是通过信号量。

现在来演示Nginx是怎么实现热部署的,博主通过修改Nginx的配置文件来模拟Nginx的升级(先copy一份副本)。由于还没有给Nginx进行热部署,现在访问http://192.168.1.199/还是原来的Nginx页面。

查看Nginx的进程:给master进程发送SIGUSR2信号,让Nginx平滑升级可执行程序。可以看到Nginx重新启动了一组master进程和worker进程,而新master进程是旧master进程的子进程(通过父子进程的继承关系,新master进程可以很方便地继承旧master进程的相关资源)。并且Nginx在日志目录中存储了新旧pid文件(保存了新旧master进程的ID)。给旧master进程发送SIGWINCH信号,让旧master进程关闭旧worker进程。现在访问http://192.168.1.199/,会响应404

而访问http://192.168.1.199/nacos,会访问到Nacos服务。

如果升级版本没有问题,就可以给旧master进程发送SIGQUIT信号,让旧master进程关闭,这样就只剩下新master进程和新worker进程,实现了Nginx的热部署。如果升级版本有问题,需要回滚到之前的版本,就可以给旧master进程发送SIGHUP信号,因为博主重新进行了测试,所以进程号都变了,但很显然旧master进程重新创建了旧worker进程,并且进行版本升级的masterworker进程没有被关闭。给新master进程发送SIGQUIT信号,让新master进程关闭,这样就只剩下旧master进程和新创建的旧worker进程,实现了回滚。回滚成功。

还需要对版本回滚(即博主这里的配置文件回滚,不然下次重启就会出问题)。为什么给旧master进程发送SIGHUP信号,旧master进程重新创建的worker进程没有重新读取配置文件?下面是官方的说明:Send the HUP signal to the old master process. The old master process will start new worker processes without re-reading the configuration. After that, all new processes can be shut down gracefully, by sending the QUIT signal to the new master process.向旧master进程发送SIGHUP信号。旧master进程将启动新worker进程,而无需重新读取配置。之后,通过向新master进程发送SIGQUIT信号,所有新进程都可以正常关闭。如果不存在新进程的情况下(只有一组masterworker进程),修改配置文件,再向master进程发送SIGHUP信号,看是否会重新加载配置文件。
很显然配置文件被重新加载了,由于博主还没有看源码,只能猜测Nginx的实现(如果说错了,请大家评论补充),Nginx应该是根据当前是否在进行热部署(存在新master进程),来决定SIGHUP信号是否需要重新加载配置文件。
以上是“Nginx热部署如何实现”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注百云主机行业资讯频道!

相关推荐: 怎么在HTML中插入空格

本篇内容介绍了“怎么在HTML中插入空格”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、键入空格 在html页面中,我们可以通过键入“空格”键来插入空格。 …

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/27 09:51
下一篇 09/27 09:58

相关推荐