zoukankan      html  css  js  c++  java
  • PlayFramework 1.x 生产环境部署 源码编译

    最近一直在使用playframework,一个高性能快速开发的框架,非常推荐尝试,在生产环境部署的时候遇到了一些问题,这里做下记录。

    首先查看了下官方的文档 1.4.x/deployment 官方提到了几种方式

    1. 独立的play应用(前面是nginx或者apache)

    1.4.x/production
    这种方式就是play依然是用常用方法启动,比如 play start app这样的方式,在play的前面做一个nginx的代理和负载均衡就可以,play提供了PROD模式,在PROD模式下会关闭代码的实时检测和热部署功能,也会做提前初始化数据库连接等操作,提高性能,但是这种模式有一个最大的问题是,你需要把你的源码也部署在你的服务器上。所以我们尝试了第二种方式

    2. 使用JavaEE服务器

    1.4.x/deployment
    比如说常用的Tomcat,Jetty等,和我们普通开发SpringMVC项目一样,最终项目产出一个War包,然后部署到这些中间件中。

    play提供了相关的命令:

    play war myapp -o myapp.war
    

    但是我们在使用了这种方式之后,发现了一些诡异的问题,比如相关资源加载不到等,网上也有一些朋友遇到了奇怪的问题 https://github.com/playframework/play1/issues/1206 最终我们也放弃了这种方法。

    3. 使用precompile方式

    在研究这个问题的时候,我查看了play的命令行选项,发现了一个命令

    precompile      Precompile all Java sources and templates to speed up application start-up
    

    这个命令的解释是预编译所有的java源码和模板来加速项目启动,后来在一个老版本文档中终于发现了终极解决方案
    war-archives-are-fully-precompiled

    play start myApp -Dprecompiled=true
    

    你可以提前使用precompile编译你的所有源码,然后通过 play start myApp -Dprecompiled=true 的方式,来直接启动项目,并不需要你的源码,这样我们的实际构建过程就是

    play clean
    play deps --verbose
    play precompile
    zip -r web.zip conf modules lib precompiled public
    

    先清理缓存,加载依赖,预编译,然后打包成一个zip文件,之后在生产环境上

    play start web -Dprecompiled=true
    

    就可以啦

  • 相关阅读:
    ASP.net注意点小结
    AJAX笔记
    为Dreamweaver写的扩展—jQuery自动提示.
    Cisco PIX防火墙配置上
    Cisco PIX防火墙配置下
    基于DNS的负载均衡
    c#使用文本框TextBox使用ctr+enter直接跳到指定Button
    Google marker
    C#中的关键字详解
    android中,锁屏之后是不是会关掉部分服务?怎么让我的服务不被关掉?
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317437.html
Copyright © 2011-2022 走看看