我在生产模式下运行Play 2.4服务器时遇到此错误:
play.api.UnexpectedException: Unexpected exception[ProvisionException: Unable to provision, see the following errors:
1) Error in custom provider, @6mh5cjo5l: Configuration error
while locating play.api.libs.CryptoConfigParser
while locating play.api.libs.CryptoConfig
...
Caused by: play.api.PlayException: Configuration error[Application secret not set]
如何解决?
答案 0 :(得分:8)
默认播放模板使用以下内容:
play.crypto.secret="changeme"
需要更改的application.conf
中的用于生产。 Play提供了一个实用程序来为您生成随机密码:
./activator playGenerateSecret
然后您可以将其填充为环境变量:
APPLICATION_SECRET=...
并在conf/application.conf
中确保以下内容:
play.crypto.secret="changeme"
play.crypto.secret=${?APPLICATION_SECRET}
正如Play documentation所解释的那样:
该配置中的第二行设置了来自的秘密 环境变量如果是这样的环境则称为APPLICATION_SECRET 变量被设置,否则,它保持秘密不变 上一行。
然后错误就会消失。
答案 1 :(得分:0)
对于仍然会迷惑于此问题并且尚未像我一样使用activator
却尚未使用sbt
的任何人。
只需遵循Play 2.x页面(Play 2.4 example)上的文档
“魔术”命令是
sbt playUpdateSecret
这将同时生成密钥并更新您的conf文件。因此,此命令为我节省了很多工作和发现。
干杯。