Java Play framework 2.1应用程序部署
我已经创建了我的第一个Play应用程序。哪种部署方法最适合生产?我是否应该将整个项目复制到生产服务器并运行play start?或者我应该对我的应用程序进行一场战争并部署在tomcat/jboss中?哪一种是最推荐的方式?与rails类型的行为相比,对它感到困惑。请注意,这应该是一个大数据应用程序,并且它可能会在以后为加载的请求提供服务器。因此,我们也在考虑可伸缩性、可用性和性能方面。此应用程序决定部署在云中Java Play framework 2.1应用程序部署,java,tomcat,deployment,playframework-2.0,cloud,Java,Tomcat,Deployment,Playframework 2.0,Cloud,我已经创建了我的第一个Play应用程序。哪种部署方法最适合生产?我是否应该将整个项目复制到生产服务器并运行play start?或者我应该对我的应用程序进行一场战争并部署在tomcat/jboss中?哪一种是最推荐的方式?与rails类型的行为相比,对它感到困惑。请注意,这应该是一个大数据应用程序,并且它可能会在以后为加载的请求提供服务器。因此,我们也在考虑可伸缩性、可用性和性能方面。此应用程序决定部署在云中 谢谢。您不需要使用Play的控制台来运行应用程序,它会消耗一些资源,其主要目标是在开发
谢谢。您不需要使用Play的控制台来运行应用程序,它会消耗一些资源,其主要目标是在开发阶段快速启动 最好的选择是按照文档中的说明使用。由于这一点,您甚至不需要在目标机器上安装Play,因为
dist
创建了包含所有必需元素的现成独立应用程序(也是内置服务器,因此您不需要在任何容器中使用WAR部署它)
如果您计划使用云,您还应该查看Heroku或CloudBees提供的服务,它允许您只需。。。通过git存储库推送更改,这是一种非常舒适的方式,请检查,向下滚动到链接:部署到。。。有关更多详细信息。如其他人所述,使用
dist
命令是为一次性应用程序部署Play的最简单方法。然而,为了详细说明,我这里有一些其他的选择和我的经验:
- 当我有一个经常更新的应用程序时,我通常在服务器上安装Play并通过Git执行更新。这样做,每次更新后,我只需运行
(停止运行的服务器),有时我会运行play stop
清除任何可能损坏的库或二进制文件,然后运行play clean
以确保所有先决条件都存在并执行编译,然后最后play stage
,为更新后的应用程序运行服务器。看起来很多,但通过快速bash脚本很容易实现自动化播放start
- 另一种方法是在前端web服务器(如Apache、Nginx等)后面部署Play。如果您想执行某种负载平衡,这是非常有用的,但这不是必需的,因为Play与自己的服务器捆绑在一起。文件:
- 使用play2war插件创建WAR归档是另一种部署方式,但我不推荐这样做,除非您将其提供给已经拥有基于您提到的这些servlet容器构建的主要基础设施的人(就像许多大公司一样)。使用servlet容器增加了Play本质上应该消除的复杂性(因此集成服务器)。据我所知,与前面描述的两种方法相比,使用这种方法没有显著的性能提升
- 当然,始终存在为您创建包的
,您可以将包上载到服务器并从那里运行playdist
。这可能是最简单的选择。文件:playdstart
冒着回答太长的风险,我只想补充最后一件事。一、 我也曾为性能和可伸缩性而烦恼,认为我需要最强大的堆栈和配置来运行我的应用程序。这种情况已经不复存在,除非你像谷歌或Facebook那样,每一个算法都必须进行微调,因为它每天都会被轰炸十亿次。硬件(或云)资源很便宜,但开发人员/系统管理员的时间却不便宜。你应该考虑在原始性能比较中部署你的应用程序的易用性和可维护性,即使在播放的情况下,最好的部署配置也可以说是最简单的选择。谢谢,非常详细的答案……)顺便说一下,我正在使用MongoDB来处理这个应用程序。谢谢!此外,MongoDB很好,但与任何数据库一样,它在性能上仍然有局限性。某些类型的查询比关系数据库需要更长的时间,但用于可伸缩性的切分要容易得多。取决于数据的结构化/非结构化程度。一切都是技术上的权衡:-)