layout | title | id |
---|---|---|
default |
Хостинг (размещение в Интернете) |
hosting |
Всегда хочется разместить то что заработало локально - где-нибудь в интернете. Конечно хорошо бы иметь выделенный сервер с настроенным Ruby и Sinatra. Но для начала есть и бесплатные альтернативы (для тестовых целей).
Это - Heroku и недавно анонсированный CloudFoundry проект. Это PaaS платформы, то есть они содержат всё необходимо для работы фреймворка - от разработчика требуется лишь загрузить необходимый код на сервис - и получить работающее приложение.
Для работы необходимо:
- зарегистрировать аккаунт на Heroku.com
- установить Git
- сгенерировать ключ
- установить gem heroku
Это - необходимо задокументировать ( Getting Started with Heroku on Windows ) - TODO.
После того как всё это проделано, для развёртывания приожения достаточно -
создать папку тестового приложения, например sinatra-test
.
Создать тестовый файл hello.rb
:
require 'rubygems'
require 'sinatra'
get '/' do
'Hello from Heroku!'
end
Создать конфигурационный файл для Rack
(Синатра является Rack-совместимым приложением) - config.ru
:
require 'hello'
run Sinatra::Application
И создать файл для Heroku в котором указаны требуемые гемы .gems
:
sinatra
Устанавливаем гем для работы с Heroku сервисом:
gem install heroku
Теперь мы готовы загрузить код на сервис Heroku. Для загрузки кода приложения Heroku использует систему контроля версий - Git.
Внутри этой папки необходимо инициализировать Git хранилище:
git init
Добавляем наши файлы в коммит:
git add .
git commit -m 'sinatra test'
Создаём приложение на Heroku, команда:
heroku create
Загружаем наш коммит в сервис Heroku в созданное приложение:
git push heroku master
После загрузки на сервис происходит запуск приложения, теперь мы можем открыть наше приложение с помощью команды:
heroku open
Урл который Heroku присвоил приложению - можно изменить. Единственное после этого необходимо будет поменять настройки git для обновления кода.
Недавно открытый сервис - cloudfoundry.com
Необходимо зарегистрироваться - после этого придёт письмо с паролем доступа на сервис.
Далее устанавливаем gem:
gem install vmc
Создаём папку sinatra-test-cf
, в ней файл hello.rb
:
require 'rubygems'
require 'sinatra'
get '/' do
'Hello from Cloud Foundry!'
end
Инициализируем целевое "облако":
vmc target api.cloudfoundry.com
В будущем - можно подключаться к другим "облакам", и проделывать размещение на них таким же образом.
Авторизуемся:
vmc login
Указываем емейл и пароль, что получили в письме.
Проверяем подключение:
vmc info
Должна отображиться информация по доступным приложениям, и сервису, например:
VMware's Cloud Application Platform
For support visit [email protected]
Target: http://api.cloudfoundry.com (v0.999)
Client: v0.3.10
User: [email protected]
Usage: Memory (128.0M of 2.0G total)
Services (0 of 16 total)
Apps (1 of 20 total)
Теперь мы можем "разворачивать" приложения на CloudFoundry.
Каждое приложение имеет, имя и этому имени соответствует суб-домен, например,
если название приложения sinatra-test-cf
, то это значит оно находится по адресу:
http://sinatra-test-cf.cloudfoundry.com
Но так же возможно размещать приложения на другом урле.
Выполним "пуш" нашего приложения, мы находимся в папке sinatra-test-cf
:
vms push
На вопрос "Would you like to deploy from the current directory?", отвечаем Y - т.к. наше приложение находится в этой же папке.
Application Name:
- указываем название нашего приложения.
Application Deployed URL:
- урл, по которому приложение будет размещено.
На вопрос Would you like to bind any services
отвечаем n
- т.к. мы пока
не подключаем какие-либо сервисы к нашему приложению.
Происходит упаковка, передача, распаковка, и развёртывание приложения.
Если всё прошло успешно, то мы можем открыть наше тестовое приложение по указанному доменному имени.