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
    

    就可以啦

  • 相关阅读:
    requests模块
    unitest模块
    doctest模块
    SessionStorage
    jquery选择器
    jquery操作dom
    jquery事件
    jquery筛选
    页面跳转传值接收
    HTML5 Web SQL 数据库操作
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317437.html
Copyright © 2011-2022 走看看