我有一个托管在 AWS 上的 Restful Angular 应用程序,我正在寻找一种干净、快速的部署解决方案,以便在不删除旧站点的情况下启用新站点。我没有太多的 DevOps 经验,所以任何建议都会很好。该网站是完全 RESTFUL,因此它只是静态页面。
我正在考虑设置 dokku with AWS plugin solution但很确定它的杀伤力太大,可能无法检测到我的应用程序,因为它只是静态页面(没有节点、rails 等)。
最佳答案
执行此操作的最佳方法是动态重新配置 Web 服务器以指向新应用程序。
将新版本的应用安装到新位置,更新 Web 服务器配置文件以指向新位置,然后重新加载服务器。
对于正在进行的请求,旧应用程序将满足它们,所有新请求将到达新应用程序,它们之间没有停机时间,除了刷新 Web 服务器时的微小延迟(不要重新启动它,只需点击它即可重新加载其配置文件)。
类似地,您可以仅在文件系统上执行此操作,方法是将新应用程序安装在与旧应用程序并行的新目录中。然后:
mv appdir appdir.bak
mv appdir.new appdir
但这并不是零停机时间,而是非常非常短的停机时间,因为两个 inode 都被重命名了。只需确保新目录和旧目录位于同一文件系统上,mv 将是即时的。优点是您可以用相同的方式简单地“撤消”操作。
有一个窗口,您根本没有应用程序。在不到一秒的时间内,将没有 appdir
,并且您将在这几微秒内提供 404 错误。因此,请在系统安静时执行此操作。但这对于仪器和操作来说都是微不足道的。
关于angularjs - Angular 应用程序的零停机部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351541/