Как мне опубликовать приложение Ruby on Rails онлайн? - PullRequest
1 голос
/ 17 января 2011

У меня есть простое приложение Ruby on Rails, которое работает через тест localhost (оба используют sqlite или ruby ​​mysql2 gem). У меня есть веб-сервер, готовый загрузить свое приложение онлайн. Я понимаю, что мне нужно создать новую базу данных mysql, что не является проблемой, и, очевидно, добавить информацию о подключении в database.yml, но как правильно загрузить все это (корень приложения) в общедоступный каталог моего сайта?

Ответы [ 3 ]

5 голосов
/ 17 января 2011

Rails содержит несколько ссылок , с которых можно начать развертывание. Я был в вашей лодке некоторое время назад, и я начал работать с Passenger и Apache в течение получаса (хотя у меня был небольшой опыт работы с Apache).

Начните просто, чтобы доказать себе, что вы можете сделать это

Не то, чтобы это была хорошая идея, но самый простой способ «развернуть» - это сделать следующее: (при условии, что вы уже втянули свое приложение в среду развертывания, создали базу данных и запустили rake db:migrate и все специфичные для приложения шаги, такие как bundle install на Rails 3):

  1. rails server -p 80 на Rails 3 (./script/server -p 80 на Rails 2).
  2. Нет шага 2.

Это должно выполняться на машине, для которой у вас есть права администратора, и для которой порт 80 еще не прослушивается другим приложением. Это неоптимально во многих отношениях, наиболее очевидным из которых является то, что он не допускает виртуальный хостинг (то есть он не будет взаимодействовать с другими "веб-сайтами", запускаемыми с этого сервера), но это хороший шаг для того, чтобы опустить футов в.

Перейдите к полному доменному имени машины или фактически к любому имени хоста, которое разрешается в IP-адрес машины (через файл hosts или запись A), и вы увидите свое приложение.

Теперь сделайте это правильно

Вы хотите выполнить следующие действия, чтобы ускорить работу приложения:

  • Разверните его за виртуальным хостом за приложением веб-сервера, таким как Apache
  • Использование настройки развертывания, ориентированной на производство (однопоточность WEBrick, помимо прочего, делает ее непригодной для производства)
  • На самом деле использовать «производственные» рельсы среды

Я буду рекомендовать очень, очень типичную среду развертывания Apache / Passenger. Причина в том, что (по крайней мере, мне кажется) этот конкретный стек наиболее полно поддерживается в Интернете, поэтому, если вам нужна помощь, вам будет проще всего с этим.

1. Настройте Apache

Я не хочу звучать как инструмент, но настройка Apache (если он еще не настроен в вашей среде развертывания) оставлена ​​в качестве упражнения для читателя. Это также варьируется в зависимости от платформы, что я не смог написать руководство по ловле. Грубо, используйте менеджер пакетов вашего дистрибутива (для Ubuntu это apt-get), чтобы подключить его.

2. Настроить Пассажира

Установка пассажиров стала еще проще. Вы просто запускаете одну команду , и их руководство проведет вас через все шаги. На этом этапе в корне приложения Rails вы сможете запустить passenger start вместо rails s, чтобы Пассажир выполнял роль, которую когда-то выполнял WEBrick.

3. Подключите Пассажира с Apache

Пассажирский гид довольно подробно документирует , шаг за шагом, как все это настроить. Атрибут ServerName в записи Apache VirtualHost должен быть установлен на ваше имя хоста. Пассажир "найдет" приложение Rails из общедоступного каталога, который вы предоставляете Apache, и когда вы перезапустите Apache, при первом обращении сервера к запросу на страницу, Passenger подключит ваше приложение Rails и начнет обслуживать файлы.

Я не выполняю эти шаги, так как пишу это руководство, поэтому я не уверен, в какой степени это делается автоматически, но убедитесь, что сайт включен через a2ensite (в случае, если вы помещаете этот узел VirtualHost в каталог sites-available, и этот пассажир активируется через a2enmod.

  1. Убедитесь, что ваша производственная среда готова Вероятно, это будет первый раз, когда вы используете производственную среду. Большинство рейковых задач не действуют автоматически в производственной среде, но вы можете их принудительно включить, включив RAILS_ENV=production в ряд с любыми рейковыми задачами. Скорее всего, вы будете работать rake db:migrate RAILS_ENV=production. Бандлер в Rails 3 работает независимо от окружения.

5. Перейти

Перезапустите Apache. Специфика того, как это сделать, зависит от дистрибутива, поэтому вам придется поискать его. Для Ubuntu apache2ctl restart делает это для меня.

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

1 голос
/ 17 января 2011

Я слышал, что драгоценные камни, такие как капистрано, могут помочь с этим.

https://github.com/capistrano/capistrano

0 голосов
/ 17 января 2011

Heroku - отличный (бесплатный) вариант: http://docs.heroku.com/quickstart

Кроме того, развертывание в Heroku настолько просто, насколько это возможно!

...