我想知道,更新时apt-get / dpkg包(.deb)是否pipe理停机时间?
例如,当通过sudo apt-get install nginx更新nginx (假设已经安装)时,它看起来像没有任何停机时间。
如果这是真的,我想转移这个能力,通过deb文件部署一个PHP应用程序。 我通常会做一个Capistrano风格的部署(构build站点,把它放到一个Web服务器上,然后通过符号链接将旧代码与新代码交换)。
如果相反,我使用.deb软件包安装我的内置应用程序,我是否也应该使用符号链接策略来最大限度地减less停机时间,或者是否以已经最小化的方式安装/更新软件包?
假设.deb包只是replace代码文件,然后调用安装后脚本来重新加载应用程序网关(php-fpm,gunicorn,unicorn,phusion,无论应用程序网关碰巧是什么)。
Debian软件包并不特别“pipe理”停机时间。 一般来说,软件包将会:
他们select哪一个是许多事情的一个function,包括从包维护者脚本被编写或审查多久以后,包是否提供其他辅助文件,如果旧版本的程序读取较新的文件,它将会摇晃(dynamic可加载的模块,已更改的文件格式以及拥有什么),以及软件包维护者是否知道他们在做什么。
所有这些在你的情况下基本上是不相关的,因为你是编写维护者脚本的人,因为它是你的包,所以你可以以你认为合适的方式来做。 但是,没有涉及重新启动服务的策略(而不是触发某种优雅的重新加载),这将不会有一段时间不可用的服务。 在这种情况下,正确的解决scheme是有一些冗余可用,无论是两台独立的机器(一次更新一台机器),还是单台机器上运行的服务的两个单独副本(同样,您更新了一台一次)。