Размещаем проект на Ruby on Rails

    Это статья о том, как я размещал Ruby on Rails проект на шаред хостинге. Оговорюсь, что делал всё по-простому (кто такой капистрано? :)


    Сначала я решил разобраться с раскручиваемым фреймворком. Сказано — сделано. Затем я решил попробовать его в действии. Первое, что пришло на ум, было воплощено в коде. После этого возник вопрос, где разместить своё творение.

    Мои требования к хостингу:
    1. ествественно, поддержка руби и рейлс, работающего на монгреле,
    2. пока хватит шаред-хостинга,
    3. доступ по ssh,
    4. установленный svn клиент (с фтп не вожусь).

    Все рассмотренные СНГ-шные хостинги имели существенные недостатки:
    1. сколько-сколько ($$$),
    2. аптайм аж 99,99999999999% зависит от трезвости админа,
    3. а про мастеркард слышали?

    Посмотрел на забугорные. Выбор пал на www.webfaction.com:
    1. были хорошие отзывы и ни одного плохого,
    2. отличная цена,
    3. потрясающая демка, как установить рейлс приложение.

    Оплатил — получил хостинг. Должен сказать, служба поддержки внимательная. Ещё до регистрации ответила на все мои технические вопросы.

    Теперь пошагово о размещении приложения.

    Шаг 1. Создание приложения

    В админке создаём приложение, которое будет автоматически сгенерировано в папке ~/webapps/test_app.



    Потом добавляем домен.



    И наконец, создаём сайт.



    Получаем рабочую болванку. Главное в ней — это файл autostart.cgi для запуска монгрела. Всё остально можно смело удалять :) Не забываем зайти на сервер по ssh.

    Шаг 2. Загружаем своё приложение

    SVN делает этот процесс проще. Запускаем svn checkout. После окончания загрузки файлов пробуем запустить, набирая в браузере адрес приложения. Видим бесконечные попытки «Restarting site ...click here».

    Смотрим логи приложения: «не может найти рейлс 2.0.2». Замораживаем модули рейлс в своей рабочей копии (т.е. сохраняем все gemы рейлс в директории plugins).

    rake rails:freeze:gems

    Делаем svn commit, затем svn update, но уже на сервере. Открываем сайт — ошибка соединения с базой.

    Шаг 3. Настройка приложения

    Ясен перец — базу никто и не создавал :) Пара кликов и готово.



    Пароль генерируется. Прописываем параметры соединения в файле production.rb. Опять svn commit, svn update. Новая ошибка — нет такой-то таблицы. Не вопрос. Пишем в консоли:

    export RAILS_ENV=production
    rake rake db:migrate

    Работает!

    Шаг 4. Установка зависимых модулей

    Вру. Приложение падает при подключении какого-то модуля. Устанавливаем gemы в свою домашнюю директорию.

    cd ~
    mkdir gems
    export GEM_PATH=~/gems
    gem install -i ~/gems module_name

    Перезапускаем приложение

    >> ps -u [логин]
    выводится список процессов
    >> kill -9 [ID процесса монгрела]
    >> ./autostart.cgi

    Всё тип-топ. Сайт работает — я доволен как-будто в первый раз.

    Размышления

    Всё-таки приятно, когда хостинги создаются для людей, а не для админов :) Хорошо, когда есть svn и не приходится закачивать файлы по фтп.

    Какие удобства даёт рейлс при размещении проекта?

    Создание и обновление структуры БД обходится без доставших mysqldump > dump.sql и mysql < dump.sql. БД находится под контролем CVS.

    Удобно разделение настроек на production, development и test. Нет боязни переписать конфигурационные файлы.

    Можно запускать тесты на рабочем сервере, чтобы окончательно убедиться в работоспособности приложения.

    В общем, когда твоё приложение работает по умолчанию и без бубна — это очень хорошо!

    П.С. Делитесь своим опытом размещения рейлс-приложений.

    Комментарии 14

      0
      Я тоже у вебфакшиона хостюсь. После того как нашёл, где нормально можно публиковать проекты, полностью перешёл на руби.

      Спасибо за статью.
        +1
        Случайно не интересовались, как запустить там монгрел кластер?
        +1
        Я бы посоветовал для приложений на Rails взять VPS на http://slicehost.com/ - цены вас приятно удивят. Удобство и стабильность работы, лично меня, очень радует.
        А развертывать приложение все же стоит делать не руками, а используя стандартный для этого инструмент Capistrano.
          0
          Скоро и его попробую. Однако даже руками обошлось без подводных камней и ковыряния кода на продакшене.
            0
            За VPS спасибо.
              0
              Отличные цены, еслиб неделю назад виртуальный хост на год вперед не оплатил бы, сильно бы подумал о slicehost. Хотя с администрированием возится тоже не очень хочется
            • НЛО прилетело и опубликовало эту надпись здесь
                0
                хостюсь у hostingrails.com

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

                хостинг хорош для размещения множества небольших сайтов на одном аккаунте. заточен под турбогиарс, друпал и остальные популярные штуки.
                  0
                  Купил хостинг у http://hostmonster.com/ у него только svn-а нет, во всем остальном он обходит, но это в теории, через пару месяцев испытаний выясню правда.
                    0
                    И таки как вам?
                      0
                      Возникли проблемы с несоответствием имени на карточке и паспорте попросили переслать сканы, поленился и попросил вернуть деньги.
                    0
                    что-то картинка после слов "И наконец, создаем сайт" странная: напротив надписи "Subdomains" скролл в окошке маковский, а чуть ниже комбобокс икспишный
                      0
                      Не фотомонтаж :)
                      0
                      время от времени перелазим с хостера на хостер.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое