2012-09-16 123 views
3

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

回答

1

如果你在Ubuntu上托管你可能是最好的服务封堵初始化脚本(this is a decent start)对于每个应用程序,这样,他们将与机器启动。

或者https://github.com/dlecan/play2-war-plugin看起来会让你发送播放2个应用程序到一个WAR文件中,你可以在Tomcat中部署:在Play 2系列中对WAR部署的核心支持不会预定到2.1版,所以你可能不会能够得到那个工作。播放1原生支持它:只是去

play war myapp -o myapp.war 
+0

感谢您的意见。我知道战争的解决方案。但Play框架开发人员建议使用内置服务器以获得更好的性能。 Init脚本是另一种解决方案(我在文章中也提到过)。但我仍然觉得必须有更好的办法。这就是为什么我想知道它是如何在ROR或Django世界中完成的。 – Steve

4

部署WAR包有一些缺点,我不能讨论有关性能,但你可以在WAR plugin兼容性列表看到仍然有一些不支持的功能。所以战争应该被看作是最后一个选项(如果没有其他可用)

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

非常笼统:我们正在将应用程序部署在专用IP上,前端通过nginx服务器进行控制,以实现代理目的和负载平衡。得益于此,我们甚至可以在服务器上以开发模式启动应用程序,并且可以在其域中使用它。当然,如果你没有额外的IP地址,你也可以使用Apache作为代理,但据我所知nginxlighthttpd只是这个任务更快。

您可以找到Set-up a front-end server文档的更多细节。

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

当然开始通过Play的控制台应用程序是在生产ENV内存不必要的浪费。

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

据我所知这是目前最优化的场景

相关问题