В прошлом году произошла облачная революция, и в настоящее время существует огромное количество альтернатив на выбор. Казалось, что каждый ИТ-игрок среднего и большого размера должен был предложить собственное облачное предложение Platform as Service (PaaS).
В этом случае предложение от Red Hat не могло остаться незамеченным. Инженеры Red Hat действительно много знают об управлении серверами, и, к счастью для нас, они также много знают о веб-приложениях Java. К счастью, они приняли вызов, и то, что они могут предложить, не разочаровало бы нас.
Разве эта панда не милашка? |
Итак, вот идет Openshift . Openshift — это бесплатная, автоматически масштабируемая облачная платформа Red-Shift для приложений Java, Perl, PHP, Python и Ruby. Это быстро развивающаяся платформа, которой удалось сформировать активное и полезное сообщество, поддерживающее ее. Более того, это бесплатное предложение во многом превосходит все, что может предложить компетенция. Просто введя свой адрес электронной почты и выбрав пароль, вы получите пять пространств имен applicationacions, каждое из которых имеет git-репозиторий и половину ГБ данных (код + база данных) для использования по своему усмотрению. Добавьте к этому поддержку mysql (с phpmyadmin), PostgreSQL , MongoDB 2.0 (с MongoRock) и даже полностью функциональный экземпляр Jenkins , обеспечивающий среду непрерывной интеграции.
Развертывание Java-приложения в openshift действительно просто, просто git add
, git commit
, git push
… и все. Но мы, разработчики игр, избалованные нашей любимой платформой, как и мы, предпочитаем просто напечатать что-то вроде play rhc:deploy
и забыть об этом.
Вот что такое модуль openshift для игровых фреймворков.
Рассказ
Таким образом, у вас есть все, что нужно для развертывания приложения Play Framework в openshift. Это означает, что вы установили JDK 1.6 или 1.5 , Play Framework , Ruby , Ruby Gems, инструменты клиента OpenShift , и вы зарегистрировались в openshift, а также создали домен.
В этом случае вам просто нужно:
1
|
$ play install openshift |
а потом
1
2
3
|
$ play new <my app> --with openshift $ cd <my app> $ play rhc:deploy -o |
… вот и все.
Ваше приложение готово … и работает на Openshift! |
Каждый раз, когда вы хотите развернуть свои изменения в openshift, просто еще раз play rhc:deploy -o
. Параметры -o
просто указывают модулю открывать ваше приложение в веб-браузере сразу после развертывания.
С нуля до облака
В качестве напоминания для себя, вот шаги, необходимые для перехода от простой установки Linux к развертыванию на openfhit:
1. Установите Java JDK 1.6
в дистрибутивах Linux на основе Debian (таких как Ubuntu, Mint и другие)
1
|
$ sudo apt-get install openjdk- 6 -jdk |
на основанных на rmp дистрибутивах Linux (таких как fedora, red hat, centos и другие)
1
|
$ sudo yum install java- 1.6 . 0 -openjdk-devel.i686 |
2. Установите игровые рамки
Вот мой быстрый и грязный список команд для установки игрового фреймворка.
1
2
3
4
5
6
7
8
9
|
$ cd ~ $ mkdir dev $ cd dev $ wget http: //download.playframework.org/releases/play-1.2.4.zip $ unzip play- 1.2 . 4 .zip $ echo "export PATH=$PATH:~/dev/play-1.2.4" >> ~/.profile $ source ~/.profile |
И затем проверьте это с:
01
02
03
04
05
06
07
08
09
10
|
$ play version ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2 . 4 , http: //www.playframework.org ~ 1.2 . 4 |
Примечание. Если вы работаете на fedora, вам может потребоваться выполнить команду
sudo yum remove sox
, поскольку пакет sox поставляется с собственной командой play, которая конфликтует с инфраструктурой play.
3. Зарегистрируйтесь на openshift
Перейдите на страницу https://openshift.redhat.com/app/user/new/express, введите свой адрес электронной почты и выберите пароль.
4. Установите, мерзавцы и рубины
В дистрибутиве Linux на основе Debian:
1
|
$ sudo apt-get install git ruby rubygems |
Rpm версия:
1
|
$ sudo yum install git ruby rubygems |
5. Установите клиентские инструменты openshift
После того, как вы установили рубиновые самоцветы, установить инструменты Red Hat Cloud так же просто, как:
1
|
$ sudo gem install rhc |
6. Создайте домен
Пространство имен вашего домена используется для идентификации ваших приложений и как часть URL-адресов ваших приложений. Это уникально для вас во всех openshift. Например, допустим, у вас есть классное пространство имен, когда вы создаете новое приложение с именем wicked , вы найдете его по адресу http://wicked-awesome.rhcloud.com . Когда вы создадите новое приложение под названием freakin , оно будет на http://freakin-awesome.rhcloud.com.
Перейдите в панель управления openshift по адресу https://openshift.redhat.com/app/control_panel и нажмите « Изменить» в разделе «NAMESPACE». Затем введите что-то вроде playdemo (ну, этот уже занят ) и нажмите «Сохранить».
7. Создайте и зарегистрируйте ваши ключи SSH
Теперь вам нужно создать пару ключей, приватный и публичный …, чтобы openshift мог проверить, что вы действительно пытаетесь что-то перенести в удаленный репозиторий git. Просто следуйте инструкциям на http://help.github.com/linux-set-up-git/ , вам просто нужно открыть терминал, а затем
1
|
$ cd ~/.ssh |
Если вы получили ошибку « Нет такого файла или каталога» , не беспокойтесь, это означает, что в вашей системе не было ключа SSH. С другой стороны, если у вас уже есть ключ SSH, было бы неплохо сделать резервную копию.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
$ ssh-keygen -t rsa -C "<my email>" Generating public / private rsa key pair. Enter file in which to save the key (/home/sas/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sas/.ssh/id_rsa. Your public key has been saved in /home/sas/.ssh/id_rsa.pub. The key fingerprint is: 22 :7b:cd:f3: 98 :4f: 92 :de: 80 :1d:ad:d6:ea: 73 : 20 :c2 <my email> The key's randomart image is: +--[ RSA 2048 ]----+ | | | | | | | . | | .. . S . | | Eo.*.= | | . o.@. | | .*++ | +-----------------+ |
И затем, вы можете настроить свое имя пользователя и адрес электронной почты, как это:
1
2
|
$ git config --global user.name "<my name>" $ git config --global user.email "<my email>" |
Теперь вы должны зарегистрировать этот ключ в openshift. Просто скопируйте содержимое id_rsa.pub (будьте осторожны, не копируйте файл id_rsa , это ваш личный ключ, и вы должны сохранить его при себе) и добавьте его как новый SSH KEY с вашей панели управления .
В Fedora раздражает необходимость вводить вашу фразу-пароль при каждой операции git. Чтобы избежать этого, просто запустите
ssh-add
и введите свою фразу-пароль в последний раз.
Кроме того, вы также можете использовать следующую команду
1
|
$ rhc-create-domain -l <your email> -p <your password> -n <pick a domain> |
и позвольте openshift создать пару закрытых и открытых ключей как libra_id_rsa и libra_id_rsa.pub в вашем каталоге .ssh /. У меня была пара конфликтов между моими собственными ключами SSH и ключами libra, созданными openshift, поэтому я предпочитаю обрабатывать ключи ssh самостоятельно.
Примечание. Вы не сможете что-либо отправить в свой репозиторий git, если у вас нет действующего открытого ключа, зарегистрированного в openshift. Учтите, что вы можете добавить столько ключей, сколько вам нужно.
Перейдите в панель управления по адресу https://openshift.redhat.com/app/control_panel, чтобы убедиться, что все правильно.
Собираюсь в облако
И теперь да, мы готовы развернуть наше приложение Play Framework в облаке.
1
2
3
|
$ play install openshift $ play new <my app> --with openshift $ cd <my app> |
Теперь для каждой команды вам нужно будет ввести, как минимум, ваше имя пользователя и пароль. Вы можете избавить себя от этой проблемы, добавив следующие ключи в файл conf / application.conf :
1
2
3
|
# Openshift module configuration openshift.rhlogin=<my login> openshift.password=<my password> |
После этого вы должны убедиться, что вы установили все необходимые компоненты. Просто беги:
1
|
$ play rhc:chk |
Он проверит наличие клиентских инструментов java 1.6 или 1.5 install, git, ruby, rubygem и openshift 0.84.15 или выше. Он также проверит, что приложение существует в openshift, в противном случае он попросит вас его создать, и, наконец, он проверит наличие локального git-репозитория, указывающего на удаленный репозиторий в openshift.
Затем вы можете развернуть свое приложение с помощью:
1
|
$ play rhc:deploy -o |
В первый раз развертывание развертывания займет довольно много времени, поскольку модуль должен загрузить все библиотеки инфраструктуры воспроизведения. После этого начального развертывания последующие коммиты будут намного быстрее, потому что git достаточно умен, чтобы отправлять только измененные файлы. Более того, модуль запросит у вас разрешение на создание приложения на openshift, а также на создание локального репо. Если вы просто хотите, чтобы скрипт создавал все без разрешения, просто добавьте в --bypass
параметр --bypass
или -b
.
Ваше приложение теперь будет доступно по адресу: http: // <мое приложение> — <мой домен> .rhcloud.com .
Если вы уже развернули свое приложение в openshift и хотите просто извлечь его из удаленного репозитория git, просто введите:
1
|
$ play rhc:fetch |
Учтите, что это разрушительная операция. Он полностью удалит ваше локальное приложение и заменит его содержимым вашего удаленного хранилища.
Чтобы просмотреть журналы вашего сервера, введите:
1
|
$ play rhc:logs |
Взгляните на файлы журналов openshift с «play rhc: logs» |
Чтобы отобразить информацию о ваших приложениях при запуске openshift:
1
|
$ play rhc:info |
Это просто сокращение для команды rhc-domain-info .
Вы можете открыть свое приложение в openshift в любое время, выдав:
1
|
$ play rhc:open |
Это также сокращение для открытия веб-браузера по адресу http: // <мое приложение> — <мой домен> .rhcloud.com .
Наконец, если вы хотите удалить свое приложение из openshift, просто запустите:
1
|
$ play rhc:destroy |
Установка модуля openshift
Есть два способа установить модуль openshift. Один из них — просто play install openshift
, который установит модуль непосредственно с вашей платформой, в <play install folder> /modules/openshift-0.1.0 . Таким образом, он будет доступен для каждого приложения, которое вы создаете
1
|
$ play new my-app --with openshift |
Другой способ — вручную настроить его как зависимость. Просто добавьте следующую строку в файл conf / dependencies.yml :
1
2
3
4
|
# Application dependencies require: - play - play -> openshift 0.1 . 0 |
А потом выпускать
1
|
play deps |
Примечание: play хранит кеш выбранных зависимостей в ~ / .ivy2 / cache . Если у вас возникли проблемы с зависимостями, просто почистите этот словарь и попробуйте снова.
Наряду с модулем имеется пример приложения в <папке модуля openshift> / samples_and_tests / openshift-demo . Просто зайдите в эту папку и выполните play deps
а затем play run
чтобы увидеть, как она работает локально. Он просто отображает конфигурацию воспроизведения и переменные среды хоста, чтобы вы могли проверить, запущено ли ваше приложение в openshift.
Демо-приложение модуля Openshift |
Затем запустите play rhc:chk
чтобы убедиться, что вы установили все необходимые rhc:chk
. После этого rhc:deploy -o
чтобы создать удаленное приложение в openshift, создать локальное git-репо, упаковать свое приложение в файл war, зафиксировать новое приложение и развернуть в openshift. Благодаря параметру -o
модуль откроет ваше приложение openshift в веб-браузере после развертывания.
Получать помощь
Вы можете взглянуть на выдачу команд модуля:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
$ play help ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2 . 4 , http: //www.playframework.org ~ [...] ~ ~ Modules commands: ~ ~~~~~~~~~~~~~~~~~ ~ rhc:chk Check openshift prerequisites, application and git repo. ~ rhc:deploy Deploys application on openshift. ~ rhc:destroy Destroys application on openshift. ~ rhc:fetch Fetches application from remote openshift repository. ~ rhc:info Displays information about user and configured applications. ~ rhc:logs Show the logs of the application on openshift. ~ rhc:open Opens the application deployed on openshift in web browser. ~ ~ Also refer to documentation at http: //www.playframework.org/documentation ~ |
Затем вы можете получить дополнительную справку о параметрах с параметром -h
или --help
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
$ play rhc:chk -h ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2 . 4 , http: //www.playframework.org ~ Usage: play [options] Options: -h, --help show this help message and exit -a APP, --app=APP Application name (alphanumeric) (required) -s SUBDOMAIN, --subdomain=SUBDOMAIN Application subdomain, root by default (alphanumeric) (optional) -l RHLOGIN, --rhlogin=RHLOGIN Red Hat login (RHN or OpenShift login with OpenShift Express access) -p PASSWORD, --password=PASSWORD RHLogin password (optional, will prompt) -d, --debug Print Debug info -m MESSAGE, --message=MESSAGE Commit message --timeout=TIMEOUT Timeout, in seconds, for connection -o, --open Open site after deploying -b, --bypass Bypass warnings |
Вы также можете указать эти параметры в файле conf / application.conf с помощью следующих ключей:
1
2
3
4
5
6
|
openshift.rhlogin: Red Hat login (RHN or OpenShift login with OpenShift Express access) openshift.password: RHLogin password (optional, will prompt) openshift.application.name: Application name (alphanumeric) (required) openshift.application.subdomain: Application subdomain, root by default (alphanumeric) openshift.debug: Print Debug info openshift.timeout: Timeout, in seconds, for connection |
Вы можете увидеть все версии модуля на странице модуля openshift по адресу http://www.playframework.org/modules/openshift .
Вы можете проверить документацию по адресу http://www.playframework.org/modules/openshift-0.1.0/home или запустить локально ваше приложение в режиме разработки с помощью play run
, а затем перейти по адресу http: // localhost: 9000 / @ документация / модули / openshift / home .
Просмотр документации модуля локально |
Вы можете задать вопросы в списке обсуждений Play Framework по адресу https://groups.google.com/group/play-framework , или вы можете попробовать с его двоюродным братом испанским по адресу https://groups.google.com/group/play- латам
Известные вопросы
К сожалению, сейчас модуль openshift не работает с окнами. Это потому, что модуль выдает много команд git, а вы не можете сделать это на окнах из стандартной оболочки, для этого требуется специальное приглашение «git bash».
Дальнейшие шаги
В следующей версии я буду изучать возможность создания версии модуля только для Java с использованием Java API-интерфейса openshift . Таким образом, нам не понадобится ни git, ни ruby, ни установка rhc tools. Моревоер, мы должны иметь возможность использовать все это из окон.
Ресурсы
- Страница модуля openshift Play Framework: http://www.playframework.org/modules/openshift
- Последняя версия: http://www.playframework.org/modules/openshift-0.1.0/home
- Проект на github: https://github.com/opensas/openshift
- Подробное руководство по развертыванию приложения Play Framework в openshift: https://github.com/opensas/play-demo/wiki/Step-12.5—deploy-to-openshift
- Отличное руководство по развертыванию Java-приложений в openshift: https://gist.github.com/1637464#file_tutorial.rst
- Несколько статей о jboss planet:
- http://planet.jboss.org/post/let_s_play_on_the_red_hat_cloud_using_the_play_framework_on_openshift_express_with_jboss_as_7
- https://community.jboss.org/blogs/thomas.heute/2011/06/29/play-framework-on-jboss-as-7?_sscc=t
Справка: игровая среда в облаке стала проще: модуль Openshift от нашего партнера JCG блог.