我们使用PHP和Java开发了各种应用程序。我们使用apache和tomcat。因此,当我们重新启动系统时,一旦apache启动,PHP应用程序就会启动,一旦tomcat启动,Java应用程序就会启动。我不确定在Play框架中处理这个问题的最好方法是什么(假设我们有10多个Play应用程序)。当然,单独启动每个应用程序并不是正确的解决方案。我们可以编写一些启动脚本,在重启后启动每个应用程序。但我很想知道开发者如何使用ROR和Django等其他类似的框架来处理这种情况。有没有这方面的工具?任何可用于Play应用程序的工具?管理在Play框架中开发的多个应用程序
回答
如果你在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
部署WAR包有一些缺点,我不能讨论有关性能,但你可以在WAR plugin兼容性列表看到仍然有一些不支持的功能。所以战争应该被看作是最后一个选项(如果没有其他可用)
目前,我有一组相同的,PHP网站通过Apache +独立播放应用程序的工作。当然,他们都需要在默认网络端口(80)上的自定义域/子域上可用。
非常笼统:我们正在将应用程序部署在专用IP上,前端通过nginx
服务器进行控制,以实现代理目的和负载平衡。得益于此,我们甚至可以在服务器上以开发模式启动应用程序,并且可以在其域中使用它。当然,如果你没有额外的IP地址,你也可以使用Apache作为代理,但据我所知nginx
或lighthttpd
只是这个任务更快。
您可以找到Set-up a front-end server文档的更多细节。
现在,使用一些简单的bash脚本和git钩子,您可以在远程计算机上准备和部署应用程序,而无需重新发送整个程序包(其大小约为50mb,适用于小型应用程序)。与Heroku部署类似,您应该只将应用代码推送到您的服务器,然后使用钩子和脚本应该准备dist
包(more about dist)并在某个定义的端口上运行它,这将通过前面提到的代理提供。
当然开始通过Play的控制台应用程序是在生产ENV内存不必要的浪费。
有关如何在服务器启动时启动Play应用程序的示例,因此您可能会根据您的计算机找到一些提示。
据我所知这是目前最优化的场景
- 1. 管理多个框架应用程序
- 2. 分发Play 2.0.1框架应用程序
- 3. 多代理框架和Web应用程序开发
- 4. OS X应用程序开发框架
- 5. Droid4me应用程序开发框架
- 6. 移动应用程序开发框架
- 7. 在开发过程中管理多个应用程序配置文件
- 8. 在Play框架中的远程处理
- 9. 部署Play!框架应用程序
- 10. Play框架2.1应用程序部署
- 11. Play用户管理!框架2.0.3
- 12. 如何在Play中的多个应用程序之间共享模型!框架?
- 13. Scala和Play框架Web应用程序托管
- 14. Zend框架会话管理多模块应用程序
- 15. 在Delphi中使用管理员权限开发应用程序
- 16. AJAX应用程序的哪个Java Web开发框架?
- 17. 可以在Google Play中发布多少个应用程序?
- 18. 无法在Play框架工作应用程序中导入com.google.firebase.FirebaseApplication
- 19. 在Play中设置HTTP标头!框架Web应用程序
- 20. 我正在开发一个类似于fb聊天的应用程序。哪个框架 - Play或Django?
- 21. Play框架打开的文件太多
- 22. 应用程序引擎python的用户管理框架?
- 23. 64位Twitter框架为在xcode开发的应用程序
- 24. 开发android应用程序需要哪个框架? MVC/MVP/MVVM
- 25. 在Scala中使用Play框架开发的REST应用程序的Swagger yaml和json文件
- 26. Play框架应用程序中的内存泄漏
- 27. Play框架应用程序中环境特定的配置
- 28. 如何使用rails和cancan开发多个管理应用程序?
- 29. 在应用程序服务器中托管的框架应用程序
- 30. Play框架2开发配置
感谢您的意见。我知道战争的解决方案。但Play框架开发人员建议使用内置服务器以获得更好的性能。 Init脚本是另一种解决方案(我在文章中也提到过)。但我仍然觉得必须有更好的办法。这就是为什么我想知道它是如何在ROR或Django世界中完成的。 – Steve