angularjs - Angular 应用程序的零停机部署

标签 angularjs amazon-web-services deployment

我有一个托管在 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/

相关文章:

java - 多个 Java Web 应用程序的自动化部署解决方案

javascript - Angular.js 图像 404 未找到

javascript - 在 Angular.js 中使用 ngRoute 时出现错误

spring - 使用 Spring Boot 为 X-FORWARDED-PROTO 配置嵌入式 Jetty 9

ruby - Capistrano 3 在任务中更改 ssh_options

Qt 创建可执行文件

javascript - 绑定(bind)到 AngularJS 中的函数

javascript - 在 html 页面上插入 Controller 数据

java - 有没有办法将小文件写入S3作为直播

amazon-web-services - boto3:如何获取CloudFormation堆栈实例的IP地址?