[翻译]Play框架1.2.7版本教程(11) - 部署应用

部署应用

如今我们已经完成了博客引擎了。让我们来看一下一些部署Play应用的步骤。

定义一个框架ID

一般,你需要部署你的应用到一台跟开发时不一样的电脑。这台电脑(很有可能是台服务器)上面的Play安装包不会是一样的。

Play允许你给每个框架安装包指定不同的ID,来用同一个application.conf管理不同的配置。让我们假设应用将部署在server01上。

一旦框架已经安装在服务器上,用play id来定义一个框架ID:

$ play id

并设置id为server01。现在我们可以在yabe的配置中定义只在服务器运行时起效的值。

在PROD模式下设置应用

我们首先给部署版本定义application.mode变量。目前,我们一直使用DEV来实现热重载,即时重新编译Java文件,显示错误信息。在PROD模式中,Play会在启动时编译所有的Java代码和模板,而且不会检查是否有改变。

yabe/conf/application.conf定义:

%server01.application.mode=PROD

现在当你在服务器运行yabe,它就会自动在PROD下启动。

配置MYySQL数据库

在生产环境中,我们将使用MySQL而不是一直在用的H2数据库。Play提供了MySQL配套的JDBC驱动,所以我们不需要下载别的。

编辑yabe/conf/application.conf中的数据库配置:

%server01.db=mysql:root:secret@yabe

我们现在调整一下Hibernate管理数据库模式的方式。如果Java模型变动时,Hibernate能够自动更新数据库模式,那是再好不过的。

修改jpa.ddl配置键:

%server01.db=mysql:root:secret@yabe

不过这么做恐怕会导致不可预料的后果,毕竟,在运行时吧数据库的安全交给未知的事物,这不是个好主意。如果你不希望Hibernate自动更新数据库,修改jpa.ddl配置键为validate

%server01.jpa.ddl=validate

配置HTTP服务器

目前我们仅仅是把80端口作为内置HTTP服务器的默认端口。但是这样做一台服务器上只能运行一个Play应用。如果我们需要在一台服务器上运行不同的应用(不过使用的是不同的IP地址),我们需要使用一个HTTP服务器作为反向代理。

你可以选择喜欢的HTTP服务器并配置其作为反向代理。这里我们选择轻量级的lighttpd作为例子。

对lighttpd的详细配置已经超出了本教程的范围,但大体上看上去像这样:

server.modules = (
      "mod_access",
      "mod_proxy",
      "mod_accesslog" 
)
…
$HTTP["host"] =~ "www.yabe.com" {
    proxy.balance = "round-robin" proxy.server = ( "/" =>
        ( ( "host" => "127.0.0.1", "port" => 9000 ) ) )
}

然后在application.conf中加入下面一行,让本地的反向代理能够连接上你的Play应用:

%server01.XForwardedSupport=127.0.0.1

这才只是个开始

如果一路上你一直跟着本教程,你应该已经懂得如何开发一个Play应用了。你学到了Play开发所需的大部分概念。

但有许多特性我们还没谈论到,特别是跟Web服务相关的,比如JSON或XML。Play还有一些带来更多特性的模块没有讲到。并且Play本身也在不断发展着。

如果你认为Play能够使得你的开发如虎添翼,现在把握机会开始吧!

谢谢收看!


spacewander
这个专栏什么都有,大部分都是关于Linux或后端开发的

make building blocks that people can understand and use easily, and people will work together to ...

5.5k 声望
1.4k 粉丝
0 条评论
推荐阅读
ebpf 月报 - 2023 年 2 月
本刊物旨在为中文用户提供及时、深入、有态度的 ebpf 资讯。如果你吃了鸡蛋觉得好吃,还想认识下蛋的母鸡,欢迎关注:笔者的 twitter:[链接]bpftrace 发布 0.17.0 版本[链接]时隔数月,bpftrace 发布了新版本 0....

spacewander阅读 991

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...

王中阳Go33阅读 2.5k评论 1

封面图
计算机网络连环炮40问
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬14阅读 1.7k

万字详解,吃透 MongoDB!
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常...

JavaGuide8阅读 1.7k

封面图
花了半个小时基于 ChatGPT 搭建了一个微信机器人
相信大家最近被 ChatGPT 刷屏了,其实在差不多一个月前就火过一次,不会那会好像只在程序员的圈子里面火起来了,并没有被大众认知到,不知道最近是因为什么又火起来了,而且这次搞的人尽皆知。

Java极客技术12阅读 3.2k评论 3

封面图
数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.3k

PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go11阅读 2.7k评论 4

封面图

make building blocks that people can understand and use easily, and people will work together to ...

5.5k 声望
1.4k 粉丝
宣传栏