Статьи

Запуск Play 1 изначально в OpenShift

 

Итак, какое-то время я использую Heroku для размещения приложений Play. Это легко, очень быстро развернуть и, следовательно, сначала в мою мантру для развития (быть продуктивным). Моя единственная проблема с Heroku — база данных. Когда я создавал карту разработчика Play , я знал, что размер базы данных, вероятно, будет проблемой, поэтому я решил эту проблему, используя облачную базу данных, для которой у меня уже была учетная запись.

Однако недавно я работал с некоторыми друзьями, и мы хотели создать сайт, который снова, вероятно, превысил бы предел Heroku в 10 тысяч строк в базе данных. Однако в этот раз я не хотел смешивать свою личную облачную учетную запись на БД с приложением, которое мы можем захотеть расширить в любое время. Итак, я отправился на поиски альтернативного решения. Варианты на самом деле довольно ограничены, если вы не хотите выплеснуть сразу. Поэтому больше всего меня заинтриговал OpenShift. Это дает вам 1 ГБ, независимо от того, используется ли это для БД, файлов приложений или других.

Недостатком OpenShift является то, что Play не поддерживается как нативный сервер приложений, и мне нужны были нативные функции (слишком много потенциальных сюрпризов при использовании оболочки WAR для приложения Play). OpenShift имеет концепцию DIY картриджей, которые позволяют вам устанавливать любой процесс Java, который вам нравится, при условии, что он привязан к правильному номеру порта. Так что это можно сделать!

Я потратил много дней, возиться с различными конфигурациями, следя за постами в других блогах и устанавливая виртуальные машины (модуль Play OpenShift не работает в Windows, поэтому я попытался использовать виртуальную машину Ubuntu на VirtualBox, чтобы опробовать этот подход!).
В любом случае, хорошая новость заключается в том, что это относительно просто, если вы перепрыгнули через препятствия на своем пути, так что это предназначено для того, чтобы спасти любого, кто хочет альтернативу Heroku, много времени при развертывании приложения OpenShift.

Короче говоря, шаги

  1. Зарегистрируйтесь в OpenShift
  2. Установите Ruby и GIT (я развернул из Windows, поэтому использовал Ruby для Windows и GIT для Windows)
  3. Установите RHC (консоль Red Hat), используя Ruby Gem — gem install rhc
  4. Создайте приложение на OpenShift, используя DIY картридж
  5. Поместите код приложения в клонированную директорию
  6. Скопируйте перехватчики open-shift (см. Код ниже) в каталог перехватчиков, который установит Play на DIY-картридж и правильно запустит / остановит Play при необходимости
  7. Настройте application.conf для работы с портами OpenShift / db / etc
  8. GIT Add / Commit / Push, чтобы отправить код в OpenShift, и наблюдайте, как происходит волшебство!

Шаг 1 — 3 нужно будет сделать только один раз. После настройки каждая модификация просто нуждается в GIT add / commit / push для просмотра ваших изменений (шаг 8). Шаг 4-7 должен быть в случае копирования / вставки. Так что, надеюсь, мы сможем запустить вас в кратчайшие сроки.

Деталь

Шаги 1, 2 и 3 — регистрация и установка программного обеспечения
Я не буду вдаваться в подробности на шагах с 1 по 3, так как информация OpenShift очень хорошо справляется с этой задачей. Итак, выполните шаги 1, 2 и 3 на странице установки OpenShift и установите необходимые инструменты для вашей платформы (Ruby, GIT и RHC), а также зарегистрируйте учетную запись и настройте RHC.

Шаг 4. Создание приложения
Перед запуском следующей команды убедитесь, что каталог с тем же именем приложения, которое вы хотите создать, еще не существует, в противном случае клон git завершится ошибкой. Когда вы будете счастливы, запустите следующий код из командной строки.
rhc app create #appname# diy-0.1

Замените # appname # именем вашего приложения. Это создаст для вас DIY картридж. Это автоматически вызовет GIT clone, чтобы клонировать приложение на вашем локальном компьютере. Если по какой-либо причине вы создали приложение с использованием веб-сайта в OpenShift, вы можете использовать его git cloneдля клонирования репо на локальный компьютер, но в нашем примере вам не нужно этого делать.

В выходных данных также будет указан URL-адрес, по которому вы сможете получить доступ к своему приложению, поэтому запомните его на этом этапе!

Если вам нужна база данных (которая была одной из причин моего прихода в OpenShift), выполните эту команду с

rhc cartridge add mysql-5.1 -a #appname#

Снова замените # appname # именем вашего приложения, которое вы установили в предыдущей команде.

Шаг 5. Разработка приложения Play.
Сохраните весь код приложения Play внутри клонированного репозитория в стандартной структуре Play. Если вы уже запустили приложение воспроизведения и просто хотите его развернуть, вы можете просто скопировать весь код воспроизведения в клонированное хранилище, чтобы все приложения, public, conf, lib и т. Д. Находились на одном уровне с. каталог openshift. Если вы запускаете новое приложение, создайте новое приложение с другим именем (в противном случае Play будет жаловаться, что каталог уже существует) и скопируйте содержимое нового приложения в клонированный репозиторий.

Ваша структура каталогов должна выглядеть примерно так

#appname#
|+ .openshift
|+ app
|+ conf
|+ diy
|+ lib
|+ misc
|+ public

Вы все еще можете бежать play runиз этой структуры, как вы делали раньше.

Шаг 6 — Получите хуки open_shift!
Хуки с открытой сменой — это набор скриптов bash, которые выполняются на определенных этапах жизненного цикла сервера. У него есть сценарии для таких вещей, как предварительная сборка, запуск, остановка и т. Д. Это сценарии, которые установят Play, если он еще не существует (поэтому он установит его только один раз, если вы не укажете новую версию), запустите сервер и выключите сервер, когда OpenShift раскручивает и выключает экземпляры. Это основная часть работы для картриджа OpenShift DIY. К счастью, вы можете скопировать код дословно.

Когда вы создали приложение и репозиторий был клонирован, был создан и загружен набор пустых action_hooks. Всего должно было быть 6. Эти

  • Построить — мы можем оставить это поле пустым
  • Deploy — мы можем оставить это поле пустым
  • Post-Deploy — мы можем оставить это поле пустым
  • Pre-Deploy — здесь мы будем загружать и настраивать Play
  • Start — это запустит экземпляр Play
  • Stop — это остановит экземпляр Play

Итак, у нас есть 3 сценария, которые нам нужно заполнить, и чтобы упростить задачу, мы также создадим общий сценарий, чтобы помочь настроить переменные конфигурации, которые позволят нам также получать данные из нашего приложения application.conf. Эти сценарии были написаны opensas, но я обновил их, так как с момента публикации его версии произошли некоторые изменения в платформе.

Скопируйте следующий код в каталог action_hooks, и мы почти готовы!

Перейдите по адресу https://github.com/codemwnci/play-openshift и скопируйте файлы в каталог ловушек действий.

ПРИМЕЧАНИЕ. В сценарии запуска я настроил часовой пояс для Лондона (поскольку OpenShift базируется в США, а большинство моих веб-приложений для Великобритании). Если вас не интересует часовой пояс по умолчанию, просто удалите
-Duser.timezone=Europe/London
стартовый скрипт или, если вы хотите другой часовой пояс, обновите значение перед развертыванием приложения.

Шаг 7 — Настройка приложения conf
В скриптах выше Play настроен для запуска с идентификатором openshift. Это означает, что мы можем полностью отделить конфигурацию openshift и локальную конфигурацию. Итак, внутри вашего application.conf поместите следующие части конфигурации.

# Openshift id configuration
# ~~~~~
%openshift.application.mode=prod
%openshift.http.port=${OPENSHIFT_INTERNAL_PORT}
%openshift.http.address=${OPENSHIFT_INTERNAL_IP}

# openshift mysql database
# ~~~~~
%openshift.db=${OPENSHIFT_MYSQL_DB_URL}#appname#
%openshift.jpa.ddl=update

Замените # appname # именем вашего приложения (то же имя, которое вы установили в шаге 4). Это позволяет Play использовать короткую конфигурацию дБ, а не 4 отдельных параметра.

Шаг 8 — фиксация и развертывание

Наконец, мы готовы развернуть наше приложение. Итак, мы просто запускаем три простые команды GIT.

cd #appname#
git add .
git commit -m "deploy to OpenShift"
git push

Если вы хотите, чтобы файлы журнала вашего приложения работали, вы можете привязать их к
rhc tail #appname#

Снова замените # appname # именем приложения, настроенным на шаге 4.

Теперь все, что вам нужно сделать, это перейти по URL-адресу, который вы указали в шаге 4, и все готово!

наслаждаться

Надеюсь, это сэкономит вам часы усилий. Надеюсь, что мне понадобилось время, чтобы напечатать это, меньше времени, которое понадобится вам, чтобы понять все это методом проб и ошибок, как я это сделал. Наслаждаться.

И для тех, кто следит за прогрессом Ялпа. Я также создам руководство по быстрому старту для Yalp, когда оно станет ближе к релиз-кандидату.