使用 Play 实现 Web 开发,第 2 部分:在云中释放 Play 的威力(3)
- UID
- 1066743
|
使用 Play 实现 Web 开发,第 2 部分:在云中释放 Play 的威力(3)
第 3 步. 打包并部署该应用程序(但不要启动)在 manifest.yml 文件中(如下所示),您要定义在部署时需要的应用程序元数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ---
applications:
- name: dwPlayDemo
host: dwplaydemo # Change this
domain: mybluemix.net
memory: 512M
instances: 1
path: target/universal/dwdemo-1.0-SNAPSHOT.zip
buildpack: https://github.com/cloudfoundry/java-buildpack.git
services:
- mailer
- demodb
env:
JAVA_OPTS: -Dconfig.resource=application.prod.conf
|
- host 和 domain 属性(串联在一起)必须与 application.prod.conf 中使用的域设置匹配。更改 host 属性以与您在生产配置中设置的新名称匹配。path 属性指定在何处找到打包的应用程序,该位置是与清单文件夹相对的位置。(此位置还不存在;您稍后将生成它。)该清单还告诉 Bluemix,使用 Java buildpack 并绑定到您在第 2 步中创建的 mailer 和 demodb 服务。最后,该清单在运行时使用 JAVA_OPTS 环境变量将 config.resource 属性设置为 application.prod.conf,强制 Play 使用生产配置。
- Java buildpack 为 Play 应用程序提供了很少的自动配置功能。在撰写本文时,它仅能处理 JDBC 连接设置;它不支持 MongoDB 或邮件收发器设置。
现在您可打包该应用程序了。转到应用程序的 root 文件夹并运行:./activator dist
该命令的结果是在 target/universal 文件夹(体现在清单的 path 属性中)下生成一个可部署到 Bluemix 的 dwdemo-1.0-SNAPSHOT.zip 文件。但是,您现在一定不要启动该应用程序,因为您还没有定义 application.prod.conf 所引用的环境变量。 - 从应用程序的 root 文件夹,推送该应用程序但不要启动它:cf push --no-start
在此阶段,应用程序已部署到 Bluemix,而且 mailer 服务已绑定到该应用程序。接下来,您要定义需要的环境变量并启动该应用程序。
第 4 步. 定义环境变量生成并修改生产配置所引用的环境变量:
- 请注意反引号:Java buildpack 的启动脚本无法正确地转义反引号 (`)。如果生成的机密包含反引号,您在启动应用程序时会遇到麻烦。确保您将生成的机密中的任何反引号替换为除单或双引号以外的任何其他字符。
应用程序机密:使用 activator 命令生成一个强应用程序机密:./activator playGenerateSecret
然后使用 cf 将该机密分配给 PLAY_APP_SECRET 变量(将该命令键入到一行上):cf set-env dwPlayDemo PLAY_APP_SECRET 'generated secret'
- Twitter 机密:转到 网站并创建一个新应用程序,将回调 URL 设置为在生产配置中定义的 twitter.callbackURL 属性的值。记下用户密钥和机密属性,并在 Bluemix 中相应地设置环境变量:cf set-env dwPlayDemo TWITTER_CONSUMER_KEY 'consumer key'
cf set-env dwPlayDemo TWITTER_CONSUMER_SECRET 'consumer secret'
- MongoDB URI:通过将 mongodb://user:password@host:port/demodb
中的 user、password、host 和 port 部分替换为您在 Bluemix 仪表板中用于创建 demodb 服务的值,获取应用程序的 MongoDB URI。然后运行:
cf set-env dwPlayDemo MONGODB_URL 'obtained MongoDB URI'
- SMTP 设置:运行 cf env dwPlayDemo 来打印为该应用程序定义的所有环境变量。记下 SendGrid 服务的 VCAP_SERVICES 值。然后设置相应的变量(将每个命令键入到一行上):cf set-env dwPlayDemo SMTP_HOSTNAME 'VCAP_SERVICES.sendgrid.credentials.hostname'
cf set-env dwPlayDemo SMTP_USERNAME VCAP_SERVICES.sendgrid.credentials.username'
cf set-env dwPlayDemo SMTP_PASSWORD 'VCAP_SERVICES.sendgrid.credentials.password'
第 5 步. 启动应用程序- 要启动应用程序,运行:cf start dwPlayDemo
- 该应用程序启动后,从另一个终端运行 cf logs dwPlayDemo。在应用程序暂存期间跟踪日志是个不错的主意,这样可以了解运行情况并尽早发现错误。
如果所有功能都按预期运行,您在浏览到(记住使用 HTTPS)该应用程序时会看到欢迎屏幕:
结束语Play Framework 和它支持的反应式编程风格正变得越来越流行,而且我相信此趋势会长期继续。在本教程中,您学习了如何通过 Cloud Foundry Java buildpack,在 Bluemix 上部署、保护和运行重要的 Play 应用程序。期待听到您使用 Bluemix 和 Play 的经验。尽情地使用 Play 吧! |
|
|
|
|
|