5.3.8. 部署至 Bluemix Cloud

CUBA Studio 通过几个简单步骤支持 IBM® Bluemix® 云部署。



Bluemix 云部署目前只支持使用 PostgreSQL 数据库的项目。HSQLDB 只支持 in-process 的情况,也就是说,每次应用程序重启时,会重建数据库,之前的用户数据会丢失。

  • 创建一个 Bluemix 账号。下载并且安装:
  • 在 Bluemix 创建一个空间(Space),需要的话,可以在一个空间里面使用几个应用程序。

  • 在空间中创建一个应用服务:Create AppCloudFoundry AppsTomcat

  • 给应用指定一个名称。名称需要是唯一的,因为这个名称会作为应用程序 URL 的一部分。

  • 创建一个数据库服务,点击空间 dashboard 中的 Create service 然后选择 ElephantSQL

  • 打开应用管理并且将数据库服务连接至应用程序。点击 Connect Existing。要使改动生效,系统需要重新加载(restaging/updating)应用程序。目前暂时不需要做这一步,因为应用程序会重新部署。

  • 数据库服务连接上之后,数据库的用户密码可以通过点击 View Credentials 看到。数据库的属性存在程序运行时的 VCAP_SERVICES 环境变量里面,可以通过 cf env 命令看到。创建的数据库也可以从空间外面访问到,因此可以从开发环境连接线上的数据库。

  • 设置 CUBA 项目运行在 PostgreSQL 数据库上(跟 Bluemix 类似的数据库环境)

  • 生成数据库脚本然后启动本地 Tomcat 服务。确保应用程序启动没问题。

  • 生成 WAR 文件用来部署到 Tomcat。

  • 在 CUBA 项目视图的 Project 部分点击 Deployment > WAR Settings

  • 勾选全部的复选框启用所有的功能,因为正确的部署是 Single WAR 带有 JDBC 驱动和 context.xml

bluemix war settings

  • 点击 Custom context.XML field 旁边的 Generate 按钮。在弹出的对话框中填写 Bluemix 里面创建的数据库的用户密码信息。

从 DB 服务拿到的 uri 里面包含数据库的用户密码信息,按照下面这个示例使用:

  1. {
  2. "elephantsql": [
  3. {
  4. "credentials": {
  5. "uri": "postgres://ixbtsvsq:F_KyeQjpEdpQfd4n0KpEFCYyzKAbN1W9@qdjjtnkv.db.elephantsql.com:5432/ixbtsvsq",
  6. "max_conns": "5"
  7. }
  8. }
  9. ]
  10. }

Database user: ixbtsvsq

Database password: F_KyeQjpEdpQfd4n0KpEFCYyzKAbN1W9

Database URL: qdjjtnkv.db.elephantsql.com:5432

Database name: ixbtsvsq

  • 点击 Generate 按钮生成单一 WAR 需要的自定义 web.xml 文件。

  • 保存设置。使用 Studio 的 buildWar Gradle 任务或者命令行生成 WAR 包。

bluemix buildWar

成功的话,会在项目的 build/distributions/war/ 目录生成 app.war

  • 在项目的根目录手动创建 manifest.yml 文件。文件内容需要包含下列信息:
  1. applications:
  2. - path: build/distributions/war/app.war
  3. memory: 1G
  4. instances: 1
  5. domain: eu-gb.mybluemix.net
  6. name: myluckycuba
  7. host: myluckycuba
  8. disk_quota: 1024M
  9. buildpack: java_buildpack
  10. env:
  11. JBP_CONFIG_TOMCAT: '{tomcat: { version: 8.0.+ }}'
  12. JBP_CONFIG_OPEN_JDK_JRE: '{jre: { version: 1.8.0_+ }}'

这里的参数:

  • path - WAR 包文件的相对路径。

  • memory - 默认的内存限制是 1G。可以根据应用的具体情况增加或者减少,也可以通过 Bluemix 的 web 页面调整。需要注意内存大小直接影响运行费用。

  • name - 上面在云服务里创建的 Tomcat 应用的名称(取决于项目地址,参考 App URL,比如 https://myluckycuba.eu-gb.mybluemix.net/)。

  • host - 跟名称一样。

  • env - 设置 Tomcat 版本和 Java 版本的环境变量。

  • 在命令行切换到 CUBA 项目的根目录。
  1. cd your_project_directory
  • 连接到 Bluemix(再次检查域名)
  1. cf api https://api.eu-gb.bluemix.net
  • 登录 Bluemix 账号。
  1. cf login -u your_bluemix_id -o your_bluemix_ORG
  • 部署 WAR 到 Tomcat
  1. cf push

push 命令从 manifest.yml 文件中读取所有需要的参数信息。

  • 可以通过 Bluemix 的 web 页面 dashboard 的 Log 标签页查看 Tomcat 服务的日志,也可以在命令行通过以下命令查看:
  1. cf logs cuba-app --recent
  • 部署过程完成后,可以在浏览器通过 host.domain URL 来访问。这个 URL 会显示在 Cloud Foundry Apps 表格的 ROUTE 字段。