5.3.4. 部署 WAR 至 Tomcat Windows 服务

  1. 使用 CUBA Studio 中的 Project > Deployment > WAR Settings 窗口或在 build.gradle 末尾添加 buildWar 任务:

    task buildWar(type: CubaWarBuilding) {
        singleWar = true
        includeContextXml = true
        includeJdbcDriver = true
        appProperties = ['cuba.automaticDatabaseUpdate': true]
    }

    如果目标 Tomcat 服务的参数跟快速部署里用到的本地 Tomcat 的参数不同,需要提供相应的应用程序属性。比如,如果目标 Tomcat 运行在 9999 端口并且使用分离的 WAR 包,任务定义会是这样:

    task buildWar(type: CubaWarBuilding) {
        singleWar = false
        includeContextXml = true
        includeJdbcDriver = true
        appProperties = [
            'cuba.automaticDatabaseUpdate': true,
            'cuba.webPort': 9999,
            'cuba.connectionUrlList': 'http://localhost:9999/app-core'
        ]
    }

    可以指定另外一个 context.xml 文件用来设置生产环境的数据库,或者之后在服务器提供这个文件,示例:

    task buildWar(type: CubaWarBuilding) {
        singleWar = true
        includeContextXml = true
        includeJdbcDriver = true
        appProperties = ['cuba.automaticDatabaseUpdate': true]
        coreContextXmlPath = 'modules/core/web/META-INF/war-context.xml'
    }
  2. 执行 buildWar Gradle 任务。会在项目 build/distributions 目录生成 app.war 文件(或者几个文件,如果选择的是分离的 WAR)

    gradlew buildWar
  3. 创建应用程序主目录,比如,C:\app_home

  4. Apache Tomcat 官网 下载并安装 Tomcat 9 Windows Service Installer。

  5. 切换到安装好的服务的 bin 目录,使用管理员权限执行 tomcat9w.exe,以便设置 Tomcat 服务配置。

    1. Java 标签页设置 Maximum memory pool 为 1024MB。

    2. Java Options 字段,添加 -Dfile.encoding=UTF-8,配置 Tomcat 使用 UTF-8 编码。

    3. Java Options 字段,添加 -Dapp.home=c:/app_home,指定应用程序主目录。

      tomcat service settings
  6. 如需提供一个本地文件配置生产环境数据库连接属性的话,可以在 Tomcat 服务的子目录 conf\Catalina\localhost 内创建配置文件。根据 WAR 文件的不同,配置文件名不一样,比如,对于单一 WAR 部署,app.xml 就可以。对于多个 WAR 部署,名称为 app-core.xml。复制 context.xml 的内容至该文件。

  7. 使用默认配置的情况下,所有的应用程序日志消息都添加在 logs/tomcat9-stdout.log 文件内。有两个选择可以自定义日志的配置:

    • 在项目中创建 logback 配置文件。然后在 buildWar 任务设置 logbackConfigurationFile 参数指定该文件的路径(手动设置或者通过 Studio 的 WAR Settings 窗口配置)。

    • 在生产环境服务器创建日志配置文件。

      从开发环境的 Tomca(项目中的 deploy/tomcat/conf 子目录)复制 logback.xml应用程序主目录并且修改文件中的 logDir 属性:

      <property name="logDir" value="${app.home}/logs"/>

      在 Tomcat 9 Windows 服务的 Java Options 字段添加下面这行,指定日志的配置文件路径:

      -Dlogback.configurationFile=C:/app_home/logback.xml
  8. 拷贝项目生成的 WAR 文件(或多个 WAR)到 Tomcat 服务的 webapps 目录。

  9. 重启 Tomcat 服务。

  10. 在浏览器打开 http://localhost:8080/app