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

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

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

如果你在Ubuntu上托管,最好为每个应用程序插入一个init脚本(),这样它们就可以用机器启动

或者,它会让您将Play 2应用程序发送到可以在Tomcat中部署的WAR文件:Play 2系列中对WAR部署的核心支持在2.1之前不会出现,因此您可能无法使其正常工作。播放1本机支持:只需开始

play war myapp -o myapp.war

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

目前,我有相同的PHP站点,它们通过Apache+独立播放应用程序工作。当然,它们都需要在默认web端口(80)的自定义域/子域上可用

一般来说:我们在专用IP上部署应用程序,该IP在前端由
nginx
服务器控制,用于代理和负载平衡。由于这一点,我们甚至可以在服务器上的开发模式下启动应用程序,并且它将在其域中可用。当然,如果您没有额外的IP,您也可以使用Apache作为代理,但是据我所知,
nginx
lighthttpd
对于这个任务来说要快得多

您可以在文档中找到更多详细信息

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

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

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


据我所知,这是目前最理想的方案

谢谢您的评论。我知道战争的解决办法。但是Play framework开发人员建议使用内置服务器以获得更好的性能。Init脚本是另一个解决方案(我在帖子中也提到了)。但我还是觉得一定有更好的办法。这就是为什么我想知道在ROR或Django世界是如何做到的。