2013-06-12 48 views
7

我正在尝试为更新运行在播放框架上的我的web应用程序提供一个最佳工作流程。用于在生产中更新playframework应用程序的最佳工作流程

我使用start脚本来启动它,但更新代码的最佳做法是什么,以便它尽可能地为用户提供无缝接口?

在Apache + PHP应用程序中,通常只需在目录中放置新的* .php文件就足够了,并且在许多情况下,更改对用户来说都不明显。

你可以分享你的工作流吗?

+3

您是否阅读过[Apache作为前端代理以允许透明升级您的应用程序](http://www.playframework.com/documentation/2.1.0/HTTPServer) - Play文档中的部分,或者不是你在找什么? – Aerus

+0

当然这是某种解决方案,但我目前不使用Apache作为代理。如果这是唯一的选择,并且只能使用内置的服务器才能完成,那么我将使用Apache。 – twowo

+0

没有前端的HTTP服务器,就我所知,你几乎局限于:'ctrl' +'d'并重新运行'play start'。为了使它非常无缝,你需要Apache,Nginx,...但是如果你的应用程序需要很长时间才能编译,你可以运行一个基本的Play应用程序,在你的其他主应用程序正在编译时显示“正在建设中”页面。 – Aerus

回答

0

该播放框架与在apache上使用诸如php之类的东西非常不同。 PHP在用户请求页面时由Apache解释。因此,您只需更改文件即可更新网站。然而,使用java(除非你使用.jsp文件,甚至有时候),代码是经过编译的,并且web服务器需要在启动时加载它和它的库。这意味着只是替换新编译的文件将不起作用。您需要重新启动Web容器或重新加载应用程序以获取更改。对于在重新加载完成的同时尝试访问站点的任何用户而言,这一点总是很明显的。

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

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

这两个选项都需要一些设置和编码才能使它们无缝工作。然而,这项工作可能是值得的,因为一旦你将它安装到生产环境变得非常容易。

相关问题