管理Play框架中开发的多个应用程序

时间:2012-09-16 16:44:47

标签: playframework

我们使用PHP和Java开发了各种应用程序。我们正在使用apache和tomcat。因此,当我们重新启动系统时,一旦apache启动,PHP应用程序就会启动,并且一旦tomcat启动,Java应用程序就会启动。我不确定在Play框架中处理这个问题的最佳方法是什么(假设我们有10多个Play应用程序)。当然,单独启动每个应用程序并不是正确的解决方案。我们可以编写一些启动脚本,在重启后启动每个应用程序。但我很想知道开发人员如何使用其他但类似的框架(如ROR和Django)来处理这种情况。这有什么工具吗?任何可用于Play应用程序的工具?

2 个答案:

答案 0 :(得分:4)

部署WAR包有一些缺点,我无法讨论性能,但正如您在WAR plugin的兼容性矩阵中所看到的,仍然存在一些不受支持的功能。因此,WAR应被视为最后一个选项(如果没有其他选项)

目前我有相同的设置,PHP网站通过Apache +独立Play应用程序工作。当然,所有这些都需要在默认Web端口(80)上的自定义域/子域上可用。

非常一般:我们在专用IP上部署应用程序,由nginx服务器在前端进行控制,以实现代理和负载平衡。由于这个原因,我们甚至可以在服务器上的开发模式下启动应用程序,它将在其域中可用。当然,如果你没有额外的IP,你也可以使用Apache作为代理,但据我所知nginxlighthttpd这个任务的速度要快得多。

您可以在Set-up a front-end server doc。

中找到更多详细信息

现在,使用一些简单的bash脚本和git钩子,您可以在远程计算机上准备和部署应用程序,而无需重新发送整个程序包(对于小型应用程序,其大小约为50mb)。与Heroku部署类似,您应该只将应用程序的代码推送到您的服务器,然后使用钩子和脚本应该准备dist包(more about dist)并在某个定义的端口上运行它,这将由之前提到的代理人。

当然,通过Play控制台启动应用程序是生产环境中不必要的内存浪费。

有关如何在服务器启动时启动Play应用程序的示例,因此您可能会根据您的计算机找到一些提示。

据我所知,这是目前最优化的方案

答案 1 :(得分:1)

如果你在Ubuntu上托管,你可能最好为每个应用程序插入一个init脚本(this is a decent start),这样他们就会启动这台机器。

或者https://github.com/dlecan/play2-war-plugin看起来它可以让你将Play 2应用发送到你可以在Tomcat中部署的WAR文件:Play 2系列中WAR部署的核心支持不会安排到2.1,所以你可能无法让它工作。播放1原生支持它:只需去

play war myapp -o myapp.war
相关问题