пʼятницю, 18 травня 2012 р.

Розгортання додатку Sinatra на OpenShift

Red Hat OpenShift - це нова, вільно-масштабована "платформа як послуга(Platform as a service, PaaS) для розробки веб-додатків. На даний момент підтримує Java, Ruby, Node, Python, PHP і Perl.

Картриджі - це компоненти додатку OpenShift, які включають в себе бази даних(MySQL, PostgreSQL, MongoDB) та інші утиліти(Cron, phpMyAdmin, RockMongo, OpenShift Metrics). Додавання картриджа у додаток забезпечує бажану функціональність.

Для початку необхідно зареєструватися на сайті https://openshift.redhat.com і створити новий додаток.
Вибрати тип додатку(в нашому випадку це Ruby 1.8.7). Вказати ім'я додатку і простір імен.
Вітання, тепер ви у хмарах!
Новий додаток буде доступний за URL виду:
http://<ім'я додатку>-<простір імен>.rhcloud.com

OpenShift використовує розподілену система керування версіями коду Git. Коли ви внесете зміни у віддалений репозиторій, сервіс автоматично розгорне ваш код і перевантажить додаток якщо необхідно.

Перед тим, як ви зможете завантажувати код, ви повинні надати публічні ключі ssh для ідентифікації вас на сервері.
OpenShift використовує публічні ключі для шифрування з'єднання між вашою локальною машиною і додатком. Ви повинні створити приватний і публічний ключі на вашій локальній машині, і завантажити публічний ключ перед тим як ви зможете приєднатися до вашого додатку

Публічний ключ знаходиться у файлі~/.ssh/id_rsa.pub
Його вміст потрібно вставити на сторінці https://openshift.redhat.com/app/console/applications/test/get_started.

Згенерувати новий ключ можна командою:
$ ssh-keygen -t rsa -C "your_email@youremail.com"

У вашій системі повинен бути встановлений клієнт Git.
Для створення свого клону проекту з git-репозиторію потрібно виконати команду типу такої:
$ git clone ssh://ххх@test-mamantoha.rhcloud.com/~/git/test.git/
Ця команда створить на локальній машині каталог з кодом вашого додатку. Після цього ви зможете правити і публікувати код у віддалений репозиторій.

Давайте подивимось на структуру додатку по замовчуванню:
config.ru - цей файл використовується для запуску веб-орієнтованих додатків на основі Rack(наприклад, Sinatra, Padrino).
tmp/ - тимчасове сховище.
public/ - публічний каталог (для картинок, css, javascript).
../data - для постійних даних.
.openshift/action_hooks/pre_build - скрипт, який запускається перед кожним внесенням змін у віддалений репозиторій (git push).
.openshift/action_hooks/build - скрипт, який запускається після git push, в процесі побудови.
.openshift/action_hooks/deploy - скрипт, який запускається після git push, але перед перезапуском додатку.
.openshift/action_hooks/post_deploy - скрипт, який запускається після git push, після перезапуску додатку.

Прийшов час створити простий Sinatra додаток.

OpenShift має дзеркало rubygems.org на http://mirror1.prod.rhcloud.com/mirror/ruby/.
Це дзеркало знаходиться у тій самій мережі, що і ваш додаток. Тому gem'и будуть завантажуватися швидше.
Щоб використовувати дзеркало OpenShift, відредагуйте файл Gemfile і просто замініть:
source 'http://rubygems.org'
на
source 'http://mirror1.prod.rhcloud.com/mirror/ruby/'

Нижче додайте gem'и, які будете використовуватися у додатку:
gem 'sinatra'
gem 'slim'

Далі відредагуйте файл config.ru, який призначений для запуску додатку Sinatra.
require 'bundler'

Bundler.require

require './app'

run Sinatra::Application

І власне app.rb:
require 'sinatra'
require 'slim'

enable :inline_templates

get '/' do
  slim :hello
end

__END__

@@ hello
h1 Hello OpenShift!
p = RUBY_DESCRIPTION
p = Time.now

Переконуємось, що всі залежності в Gemfile доступні для нашого додатку.
bundle install

Коли ви внесете зміни у віддалений репозиторій, OpenShift повідомить статус розгортання коду. Сервіс виконає усі необхідні дії і перезапустить додаток.
git add .
git commit -a
git push

Робочий приклад додатку зі статті: http://test-mamantoha.rhcloud.com/

2 коментарі:

Анонім сказав...

Домин свій можна прикрутити?

Anton Maminov сказав...

можна