如何在分布式playframework应用程序中更改配置

如何在分布式playframework应用程序中更改配置,playframework,playframework-2.0,Playframework,Playframework 2.0,目前正在使用playframework 2.0.2,并在my application.conf中设置db连接信息 db.default.url="jdbc:mysql://localhost:3306/test" db.default.driver=com.mysql.jdbc.Driver db.default.user=test db.default.pass=test 但我想知道的是,当我使用“play clean update dist”将我的应用程序投入生产时 然后在没有applic

目前正在使用playframework 2.0.2,并在my application.conf中设置db连接信息

db.default.url="jdbc:mysql://localhost:3306/test"
db.default.driver=com.mysql.jdbc.Driver
db.default.user=test
db.default.pass=test
但我想知道的是,当我使用“play clean update dist”将我的应用程序投入生产时
然后在没有application.conf的站点上安装它。这意味着我必须在分发代码之前更改db连接?分发配置文件后,是否有方法更改配置文件中的db连接?

使用
play dist
时,配置文件会打包到zip中的jar文件中。您可以创建一个
conf/prod.conf
文件,其中包含以下内容:

include "application.conf"

db.default.url="jdbc:mysql://foo.com:3306/mydb"
db.default.driver=com.mysql.jdbc.Driver
db.default.user=foo
db.default.pass=bar
然后,当您启动Play应用程序时,通过运行以下命令告诉它使用
prod.conf
文件:

start -Dconfig.resource=prod.conf

为了避免打包配置文件,我建议您在生产服务器上创建一个prod.conf,并将其存储在一个文件夹中,而不是将分布式文件解压缩到的文件夹中。然后创建一个如下所示的启动脚本(或更复杂的启动脚本,将应用程序作为服务启动)。通过将配置文件与dist包分开,可以避免在推出新更改时意外重写它的风险

#!/bin/bash
sh start -Dconfig.file=/path/to/prod.conf &

这需要一个包含生产密码的分发包,不是吗?如果我不能在人工制品中包含产品密码,那么“start-Dconfig.resource=prod.conf-Ddb.default.pass=myBar”是否有效?是的,很好的解释。还可以使用
-D
命令行参数设置配置参数。或者您可以使用
-Dconfig.file=/home/blah/prod.conf
来避免将
prod.conf
文件放入工件中。