deployment - 在生产中更新 Play Framework 应用程序的最佳工作流程

标签 deployment playframework playframework-2.0 workflow

我正在尝试提出一个最佳工作流程来更新我在 play 框架上运行的 Web 应用程序。

我使用 start脚本来启动它,但是更新代码以使其对用户尽可能无缝的最佳实践是什么?

在 Apache + PHP 应用程序中,通常在目录中放置新的 *.php 文件就足够了,而且在许多情况下,用户甚至不会注意到这种变化。

你能分享一下你用 play 框架来做这件事的工作流程吗?

最佳答案

play 框架与在 apache 上使用 php 之类的东西有很大不同。当用户请求页面时,Apache 会解释 PHP。因此,您需要做的就是更改文件以更新站点。但是,使用 java(除非您使用 .jsp 文件,甚至有时使用),代码是按字节编译的,网络服务器需要在启动时加载它及其库。这意味着仅替换新编译的文件是行不通的。您需要重新启动 Web 容器或让它重新加载应用程序以获取更改。对于在重新加载完成的同时尝试访问该站点的任何用户来说,这总是会引起注意。

你可以有一个 web 服务器(不一定是 Apache),它指向你当前的 play 安装作为代理并并行启动它的新版本,然后将你的代理 web 服务器指向你的新版本并打开旧的版本关闭。这可能是最简单的方法,可以编写脚本。

另一种方法是拥有一个 Web 应用程序,将用户重定向到该应用程序,并进行类似于上面的并行更改。

这两个选项都需要一些设置和编码才能让它们无缝工作。然而,这项工作可能是值得的,因为一旦您将其设置为生产部署就变得非常容易。

关于deployment - 在生产中更新 Play Framework 应用程序的最佳工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17068248/

相关文章:

java - 当项目在 Java 中使用许多其他依赖项时,如何制作安装程序?

json - Play 2.3 隐式json转换导致空指针异常

node.js - 部署 AWS Beanstalk 后执行命令

deployment - 部署使用 Microsoft ReportViewer 的 WinForms 应用程序时出现问题

deployment - 设置 :deploy_to from server config in Capistrano3

java - Play Framework : Why the cookie isn't showing

playframework-2.0 - 如何处理AskTimeoutException?

scala - 如何依赖 GitHub 中的 PlayProject?

node.js - Play Framework 和 Node.js 关系数据库的非阻塞行为

scala - Play framework 2.0 - deadLetters 而不是 Actor