5.3.7. Развертывание в облаке Jelastic

Рассмотрим пример сборки и развёртывания приложения в облаке Jelastic.

В данный момент развёртывание в облаке возможно для проектов, использующих в качестве сервера базы данных PostgreSQL или HSQL.

  1. Создайте бесплатную тестовую учётную запись в облаке Jelastic с помощью веб-браузера.

  2. Создайте новое окружение, в которое будет развёрнут WAR:

    • Кликните New Environment.

      jelasticEnvironment
    • В открывшемся окне задайте настройки: окружение должно иметь Java 8, Tomcat 8 и PostgreSQL 9.1+ (если в проекте используется база данных PostgreSQL). В поле Environment Name задайте уникальное имя окружения и нажмите на кнопку Create.

    • Если в созданном окружении был использован PostgreSQL, вы получите email с информацией о подключении к БД. Перейдите в административный веб-интерфейс по ссылке в письме, полученном после создания окружения, и создайте пустую базу данных. Выбранное имя базы данных должно быть указано позже в context.xml.

  3. Соберите единый Single WAR файл, используя CUBA Studio:

    • Выберите пункт главного меню CUBA > Deployment > WAR Settings.

    • Включите флажок Build WAR.

    • Введите значение .. в поле Application home directory:

    • Включите флажки Include JDBC driver и Include Tomcat’s context.xml.

    • Если ваш проект использует базу данных PostgreSQL, нажмите на кнопку Generate рядом с полем Custom context.xml path. Укажите пользователя, пароль, хост и имя базы данных, созданной ранее в веб-интерфейсе Jelastic.

      customContextXml
    • Установите флажок Single WAR for Middleware and Web Client.

    • Нажмите на кнопку Generate рядом с полем Custom web.xml path. Studio сгенерирует специальный web.xml для единого WAR, содержащего блоки Middleware и Web Client.

      jelasticWarSettings
    • Добавьте свойство cuba.logDir в окне App properties:

      appProperties = ['cuba.automaticDatabaseUpdate': true,
      'cuba.logDir': '${catalina.base}/logs']
    • Нажмите на кнопку OK. В конец файла build.gradle добавилась задача сборки buildWar:

      task buildWar(type: CubaWarBuilding) {
          includeJdbcDriver = true
          includeContextXml = true
          appProperties = ['cuba.automaticDatabaseUpdate': true,
                           'cuba.logDir'                 : '${catalina.base}/logs']
          webXmlPath = 'modules/web/web/WEB-INF/single-war-web.xml'
          appHome = '..'
          coreContextXmlPath = 'modules/core/web/META-INF/war-context.xml'
      }
    • Если ваш проект использует HSQL, откройте задачу buildWar в файле build.gradle и добавьте свойство hsqlInProcess = true, чтобы запустить встроенный сервер HSQL при развертывании WAR файла. Убедитесь, что свойство coreContextXmlPath не задано.

      task buildWar(type: CubaWarBuilding) {
          appProperties = ['cuba.automaticDatabaseUpdate': true, 'cuba.logDir': '${catalina.base}/logs']
          appHome = '..'
          includeContextXml = true
          webXmlPath = 'modules/web/web/WEB-INF/single-war-web.xml'
          includeJdbcDriver = true
          hsqlInProcess = true
      }
    • Запустите сборку, выбрав buildWar через командную строку:

      gradlew buildWar

      В результате в подкаталоге build\distributions\war проекта будет создан файл app.war.

  4. Для развертывания WAR-файла в Jelastic используйте задачу Gradle deployWar:

    task deployWar(type: CubaJelasticDeploy, dependsOn: buildWar){
        email = ****
        password = ****
        hostUrl = 'app.j.layershift.co.uk'
        environment = 'my-env-1'
    }
  5. По завершению процесса развёртывания CUBA-приложение будет доступно в облаке Jelastic. Чтобы его открыть, воспользуйтесь URL вида <environment>.<hostUrl> в браузере.

    Например:

    http://my-env-1.j.layershift.co.uk

    Вы также можете открыть приложение с помощью кнопки Open in Browser, расположенной на панели окружений в Jelastic.

    jelasticDeploy