[翻译]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阅读 1.5k

Java8的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft32阅读 27.6k评论 1

一文彻底搞懂加密、数字签名和数字证书!
微信搜索🔍「编程指北」,关注这个写干货的程序员,回复「资源」,即可获取后台开发学习路线和书籍来源:个人CS学习网站:[链接]前言这本是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视...

编程指北71阅读 33.8k评论 20

Java11的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft28阅读 19.4k评论 3

Java5的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft13阅读 21.9k

Java9的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft20阅读 15.4k

学会这些 Web API 使你的开发效率翻倍
随着浏览器的日益壮大,浏览器自带的功能也随着增多,在 Web 开发过程中,我们经常会使用一些 Web API 增加我们的开发效率。本篇文章主要选取了一些有趣且有用的 Web API 进行介绍,并且 API 可以在线运行预览。C...

九旬13阅读 1.7k

封面图

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

5.5k 声望
1.4k 粉丝
宣传栏