14 октября 2012 г.

Разворачивание RubyOnRails 3 + PostgreSql приложения с github на хостинге Locum.ru

Один мой знакомый системный администратор предложил попробовать хостинг locum.ru ссылаясь на крайне приятное впечатление о данном сервисе. Сразу оговорюсь что данный пост не является рекламой: при первом знакомстве возникли некоторые моменты, которые мягко говоря смутили меня и о них хочется рассказать подробнее, так как необходимой информации я не нашел ни в официальном блоге, ни в рунете.

Здесь я пошагово расскажу как развернуть ваше приложение на тарифе "Плекс" или аналогичном ("Прайм" и "Оптима" - тарифы поддерживающие RubyOnRails-проекты на момент написания статьи). Будет рассмотрено подключение по ssh, особенности работы с rails-приложением через командную строку на сервере данного хостинга и описан процесс клонирования git-проекта.


Итак после авторизации в панели управления перейдите в раздел "Услуги":

В разделе услуги, нажмите кнопку "СОЗДАТЬ ПРОЕКТ":
Выберите выберите тип создаваемого проекта: RubyOnRails, удобное для вас название (на картинке ниже это "Awesome") проекта и  тип СУБД проекта (я использую Postres), которую используете на проекте. Нажмите кнопку "СОЗДАТЬ":
На открывшейся странице вы увидите информацию о созданном проекте и интерфейс для выбора версии интерпретатора Ruby и перезагрузки сервера. В данный момент ваш проект создан в "голом" виде. Если вы перейдете в раздел "Проекты" вкладки "Услуги" в панели Locum, то сможете увидеть созданный вами проект и привязанный к нему технический домен. Если вы перейдёте по этой ссылке, то увидите приветственный экран каркаса RubyOnRails ("public/index.html"). Соответственно у нас есть среда проекта и база данных для него.

Подключимся на наш виртуальный сервер на locum через протокол SSH для дальнейшего разворачивания проекта. Чтобы узнать хост подключения, логин и пароль перейдите в панели управления хостинга в раздел "FTP и SSH" вкладки "Услуги". Вы увидите единый логин и пароль для всех ваших проектов в этой учётной записи. Несмотря на то что пара логин-пароль у обоих протоколов одинаковая, на момент написания статьи, сервера locuma не работали через протокол sftp, будьте внимательны.


Для подключения через ssh с активным вводом логина и пароля вместо привычного Putty мне пришлось использовать Kitty - это расширенная модификация позволяющая расширенную работу с сессиями (официальная страница проекта - http://www.9bis.net/kitty/). Итак вводим сервер, подключаемся, вводим логин и пароль и мы в командной строке нашего сервера. Перейдём в папку созданного проекта, выполните команду:
Где вместо "your-project" укажите название вашего проекта. Вы попадёте в текущую папку вашего проекта с Rails3 каркасом. Для начала работы с системой контроля версий Git инициализируем папку как git-проект, выполнив в командной строке:
Далее мы клонируем наш проект, в моём случае в качестве репозитория я использую Github. Выполните следующую команду в консоли чтобы добавить источник вашего git-репозитория, этот пример для репозитория с github'а, замените "Username" на ваш логин, а "Your-Project" на название вашего проекта или заменить путь целиком:
Получим наши файлы:
Теперь файлы проекта находятся на сервере проекта. Осталось установить требуемые gem'ы, настроить подключение к базе данных и развернуть её архитектуру. Окружение нашего проекта устроено таким образом что нам нужно использовать bundle для работы с rails утилитами:

Замените при необходимости "1.9.3" на используемую версию интерпретатора Ruby на проекте. Замечу что на locum'е используется сервер "Unicorn" - это мой любимый сервер, но если ваш проект запускался ранее через другой сервер, то пропишите в вашем Gemfile: "gem 'unicorn'". После установки гемов, я создаю файл "config/database.yml", вы можете сделать это при помощи встроенного редактора nano или vim (первый проще в освоении и удобен для создания и редактирования небольших текстовых файлов, второй пригодится для более "серьезной" работы), либо подключившись по фтп.

Чтобы узнать информацию о хосте сервера базы данных вашего проекта, её названии и пароле перейдите в раздел "Базы данных" вкладки "Услуги" в панеле управления хостингом и кликните по ссылке "Подробнее" в строек базы привязанной к вашему проекту. Привожу примерный листинг для файла подключения к PostgreSql субд "config/database.yml":
Теперь нам осталсь развернуть архитектуру базы данных и при необходимости залить в неё дефолтные данные:
Обратите внимание что обращение происходит через "rvm use 1.9.3 do bundle exec" - также происходит работа с rails-утилитой. О причинах написано в официальном блоге, ну а нам осталось перезапустить сервер (Панель хостинга -> "Услуги" -> "Проекты" -> Ваш проект "Подробнее" -> "Перезапустить сервер").

Теперь ваш проект запущен в production версии и доступен по техническому домену. Если этого не произошло попробуйте найти причину в логах, они доступны в папке "log" находящейся в корневой папке проекта.

Замечания, впечатления и пожелания от статьи оставляйте в комментариях ниже. Успехов в работе!

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

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