четверг, 4 апреля 2013 г.

Как деплоить Clojure на OpenShift


Прежде всего вам необходимо зарегистрироваться на OpenShift и залогиниться. Второй этап — настроить ssh-доступ. Да, y OpenShift есть специальные консольные утилиты для работы без ssh, но это не наш случай.

1. Генерим открытый ssh-ключ:

$ ssh-keygen -t rsa

В каталоге .ssh вы получите два файла: id_rsa и id_rsa.pub.

2. Зайдите в настройки своего аккаунта.


3. Выберите «Change settings», попадете на экран Personal Information.
 

4. Нажмите кнопку «Add a new key...», попадете на экран Add a public key. Скопируйте туда содержимое файла id_rsa.pub.


Далее необходимо создать приложение.

5. Выберите вкладку «My Applications» и нажмите кнопку «Add application». OpenShift покажет вам экран выбора типа приложения. Выберите приложение Tomcat7.


6. На экране конфигурации нового приложения введите его имя и нажмите кнопку «Create application.


7. Откроется экран с подробностями о созданном приложении. Нажмите на ссылку «Add cartridge».


8. В открывшемся экране выберите нужную вам базу данных. В этом примере мы рассматриваем MySQL 5.1. Добавьте этот картридж.


9. OpenShift покажет вам экран с информацией о вашей БД. Важный момент: хост и порт для коннекта из приложения хранятся в переменных окружения среды OPENSHIFT_MYSQL_DB_HOST и OPENSHIFT_MYSQL_DB_PORT.


10. Зайдите на вкладку My applications, выберите ваше приложение и нажмите на ссылку «Want to login to your application?». OpenShift покажет вам ssh-команду для логина на сервер.


11. Введите показанную команду

$ ssh 515c...00401@helloworld-writing.rhcloud.com

Если до этого вы правильно зарегистрировали ваш id_rsa.pub, то ssh тихо залогинит вас на сервер и не спросит пароля.

Выполните команду

$ ctl_all restart

Эта команда необходима для того, чтобы OpenShift рестартанул приложение и подтянул картридж с MySQL. После перезагрузки в окружении среды перезапущенного Tomcat появятся переменные OPENSHIFT_MYSQL_DB_HOST и OPENSHIFT_MYSQL_DB_PORT.

12. Выйдите из ssh-сессии командой exit. Сконфигурируйте строку соединения к MySQL следующим образом.

(def env (into {} (System/getenv)))
(def dbhost (get env "OPENSHIFT_MYSQL_DB_HOST"))
(def dbport (get env "OPENSHIFT_MYSQL_DB_PORT"))
(def default-conn {:classname "com.mysql.jdbc.Driver"
                             :subprotocol "mysql"
                             :user "myuser"
                             :password "mypassword"
                             :subname (str "//" dbhost ":" dbport "/helloworld?useUnicode=true&characterEncoding=utf8")
                             :delimiters "`"})

В поля :user и :password необходимо подставить значения, которые OpenShift выдал вам на шаге 9. В поле :subname слово helloworld — это имя БД (также получено на шаге 9).

13. Соберите ваше веб-приложение командой lein ring uberwar. Переименуйте её в ROOT.war.

14. Скопируйте war-ку на сервер:

$ scp ROOT.war 515....01@helloworld-writing.rhcloud.com:app-root/data

15. Залогиньтесь на сервер

$ ssh 515...401@helloworld-writing.rhcloud.com

16. Переместите скопированную war-ку в каталог с веб-приложениями:

$ mv app-root/data/ROOT.war app-root/runtime/repo/webapps/

17. Через некоторое время ваше новое приложение будет доступно. В моем случае — по адресу http://helloworld-writing.rhcloud.com
 

Комментариев нет:

Отправить комментарий