Часть 2. Java EE. Развертывание проекта Tomcat 8 на OpenShift

В первой части данной статьи рассматривалась тема про интеграцию и запуск первого проекта на Tomacat 8 с IDE Netbeans 8.2. В данной части рассмотрим пример развертывания, или, иначе говоря,загрузка готового релиза проекта на удаленный сервер, где он будет уже использоваться клиентами. В роли сервера можно использовать люубую платформу, где стоит ОС Windows, Ubuntu, Mint, CentOS, Red Hat и т.д., для которых есть релизы сервера Tomcat. В данном примере рассмотрим пример развертки нашего проекта на бесплатном облачном хостинге OpenShift, который предлагает сервер на Red Hat. По сути дела, OpenShift — это отдельный проект от той же Red Hat для масштабируемых проектов в облачной вычислительной системе, которая работает на ОС Red Hat. OpenShift предлагает сервер c характеристиками:

512 MB RAM
100 MB swap
1 GB disk space

чего очень даже предостаточно для мелких проектов.

Система OpenShift представляет из себя сервис из рода PaaS. Platform as a Service (PaaS, «платформа как услуга») — модель предоставления облачных вычислений, при которой потребитель получает доступ к использованию информационно-технологических платформ: операционных систем, систем управления базами данных, связующему программному обеспечению, средствам разработки и тестирования, размещённым у облачного провайдера.

 

Доступ клиентов к проекту

Перед тем, как создать проект нужно создать доменное имя третьего уровня для проектов в доменной зоне второго уровня rhcloud.com. Это логично, потому что мы делаем наш проект доступным для клиентов, а клиенты могут увидеть наш проект через браузер и через доменную часть проекта. Делается это бесплатно в самой системе OpenShift. На самом деле, это будет частью доменного имени для нескольких проектов, а другая часть будет добавляться в зависимости от того, как вы назовете часть доменного имени конкретного проекта. К примеру, вы создали доменную зону projectsdomain.rhcloud.com, где projectsdomain — общее , уникальное в пределах OpenShift и доменная зона под ваши проекты. А остальная часть будет добавляться через дефис. К примеру, вы сделали чат на Tomcat и назвали домен данного чата, как chatproject, то полноценная ссылка, по которой будет доступен ваш чат на OpenShift будет выглядеть, как chatproject-projectsdomain.rhcloud.com. На самом -то деле, такое длинное название для ссылки на проект — это не приговор, а необходимость OpenShift и это ограничение окупается бесплатностью облачной системы и возможностью дополнить название домена уникальным образом. Вариантом решения данной проблемы является регистрация домена проекта на стороннем регистраторе доменов и указание в панели управления данного домена ссылки на projectchat-projectsdomain.rhcloud.com и делается это через поля CNAME, указав в роли параметра новый домен, а в роли значения — ссылку  chat-mydomain.rhcloud.com на наш проект на OpenShift

overview-platform-features-14

Подробнее об этом можно почитать по ссылке официальной документации.

 

Установка необходимого ПО на сервер

Вся структура управления проектом производится, в основном из командной строки Red Hat, а начальную установку необходимого ПО можно произвести и из панели управления через аккаунт консоли OpenShift. Весь набор ПО, которую можно «юзать» представлен на странице, через кнопку «Add application…». На странице добавления программы в проект есть множество ПО, начиная от БД и заканчивая интерпретаторами Python.

openshift-tomcat-dep-app-page

Из всего этого разнообразия, исходя из темы данной статьи, нам нужен сервер на основе Tomcat 8. На момент написания статьи Tomcat 8 не предоставлен на сервисе OpenShift и это можно решить выбором Tomcat 7 и принципиальных отличий не будет, если проект не использует специфичные для Tomcat 8 функций.

create-tomca-tcatridge-on-openshift-png-of-article

На следующем шаге, после создания проекта мы попадем на панель, где будут все наши проекты и наш проект chatproject

created-tomcat-catridge-on-openshift

Нажав на данный проект мы попадем в панель управления данным проектом, где можно дополнительно поднастроить или дополнить наш проект. Особое внимание требует панель «Source Code», где находиться ссылка для доступа к коду проекта.

 

created-tomcat-catridge-on-openshift-info-on-panel

OpenShift не располагает какой-то панелью для редактирования и загрузки релиза проекта на сервер, но вместо этого он выдает ссылки для аутентификации и ссылку для доступа к исходному коду. Как этими ссылками пользоваться рассмотрим далее

Аутентификация и доступ к серверу Red Hat через канал SSH

Для того, чтобы управлять севером Red Hat будем пользоваться программой PuTTY, которая позволит нам осуществить связь с удаленным сервером из нашего компьютера через консоль и выполнять различные команды для настройки системы.

Принцип RSA — аутентификации заключается в генерации 2-х ключей: публичного и приватного. Приватный ключ должен быть у нас на компьютере для нашего PuTTY, а публичный — на сервере для OpenShift, далее.

Вместе с PuTTY загрузим и PuTTYgen для генерации RSA ключей, посредством которых мы можем связаться и аутентифицироваться на удаленном сервере через SSH протокол.

Для генерации ключей открываем программу PuTTYgen, жмем на кнопку «Generate» и проводим мышкой по области под процесс-баром

puttygen-create-private-and-public-keys-for-openshift-proj

Далее, после окончания процесса выведется окно с публичным, посредством которого можно уже генерировать приватный ключ с ключевой фразой, которая не обязательно, но требуется для дополнительной защиты при аутентификации. На данном окне, далее, генерируем приватный ключ и сохраняем оба ключа в какой-либо папке

puttygen-create-private-and-public-keys-for-openshift-proj-2

Далее, для подключения к удаленному серверу нам достаточно иметь под рукой:

  1. Приватный и публичны ключи, сгенерированные при помощи PuTTYgen;
  2. Логин к Red Hat серверу нашего проекта;
  3. Программа PuTTY для аутентификции и выполнения команд через консоль.

Логин к серверу проекта генерируется OpenShift и можно узнать, нажав на ссылку «Remote Access» на панели проекта

login-catridge-on-openshift-panel

А для того, чтобы OpenShift знал наш публичный ключ, то его надо прописать в поле регистрации SSH -ключей на панели «Settings», нажав на кнопку «Add a new key»

add-new-ssh-public-key-openshift-settings-panel

При добавлении нового ключа задаем имя и копируем текст публичного ключа, который был сгенерирован у нас программой PuTTYgen жмем create

process-add-new-ssh-public-key-openshift-settings-panel

И все, теперь нам нужно все нужные данные в PuTTY и соединиться с удаленным сервером на OpenShift, где царит мир команд Red Hat. Для этого открываем PuTTY

puttygen-create-new-session-of-openshift-connection

После ввода всех данных и нажатия кнопки «Open»мы попадаем в командную консоль Red Hat, где потребуется ввести ключевую фразу, которую мы вводили при регистрации приватного ключа и где уже можем творить что угодно с сервером, включая установку и удаление программ и файлов

puttygen-command-console-of-openshift-connection

Загрузка проекта на удаленный сервер OpenShift

После того, как выбрали и установили нужное ПО на наш сервер с определенным публичным доменном и настроили проект, необходимо подготовить инструменты для загрузки проекта из нашего компьютера на сервер Red Hat под нашим аккаунтом OpenShift.

Для этого есть несколько способов, но мы воспользуемся одним из них — загрузка через инструмента контроля версий GIT TortoiseGIT. После загрузки и установки данного инструмента нам необходимо настроить локальный GIT репозиторий. Для этого создаем папку на нашем компьютере, где будет репозиторий загружаемого проекта и внутри этой папки жмем левой кнопкой мыши на пустую область и выбираем пункт «Git Clone…»

git-clone-in-git-repositoriy

Далее выйдет окно предварительной настройки проекта, где вводим ссылку на исходники нашего проекта, скопировав его из OpenShift панели проекта и указав на файл приватных ключей, которую мы ранее сгенерировали

git-clone-in-git-repositoriy-settings-panel

После этого жмем «Ок» и исходники с сервера проекта скопируются в наш локальный Git — репозиторий. В данной папке заходим в папку webapps и копируем туда наш проект с раширением .war из папки дистрибутива, где его построил IDE NetBeans переименовав его в ROOT.war. Далее заходим в корневую папку скачанных исходников в репозитории и из меню ЛКМ выбираем пункт «Git commit -> «master» …»

commit-master-git-repo-proj

После нажатия выйдет окно настройки коммта. Коммит(commit) — это сеанс загрузки проекта на сервера из локального репозитория с комментарием об изменениях. В окне весь список того, чего нет на сервере или того, что не синхронизировано в соответствии с содержимым на сервере. Т.е., всякое изменение в локальной репозитории должно быть отражено в репозитории на сервере, поэтому, Git — инструмент и предназначен для управления всей этой «кашей»

commit-master-do-process-commiting

Далее нажимаем на кнопку «ОК» и выйдет окно с процессом и с кнопкой «Push…»

process-commit-master-do-process-commiting

на которую нажмем и выйдет окно с преднастройками

process-commit-master-do-process-commiting-width-presettings

Нажимаем «ОК» и вводим ключевую фразу для наших ключей, которую мы создали при генерации в PuTTY в появившемся окошке

process-commit-master-do-process-commiting-width-presettings-keyphrase

далее, жмем «ОК» и пойдет процесс переброски обновленных файлов из локального репозитория на репозиторий проекта на сервере OpenShift

process-commit-master-do-process-commiting-succes

Теперь, после удачной переброски, закрываем это окно и переходим по ссылке нашего проекта projectchat-projects.domain.rhcloud.com, где мы и увидим его в задеплоенном или, иначе говоря, в развернутом виде на нашем сервере.