Простое развертывание Rails

Я новичок в рубине и хочу узнать больше о том, как он работает. Поэтому я тестировал конфигурацию сервера на виртуальной машине, чтобы быстро развернуть Rails.

У меня есть RVM, Ruby, Rails, Git, Gitolite, PostgreSQL, Thin и Nginx, работающие в среде Ubuntu 10.04.

Теперь я хочу связать все воедино. Однако я застрял в процессе развертывания.

После фиксации проекта в транке Git я хочу подключить действие развертывания, чтобы поместить приложение в нужное место, установить его в рабочую среду, установить пакеты, выполнить миграцию и перезапустить Nginx.

Но я не могу найти простые ссылки на то, как это работает. Все, что я нашел в Google, - это руководства по использованию пассажира, капистрано и других. Я хочу инициировать развертывание в действии фиксации git, аналогично героку, но какие инструменты лучше всего подходят для этого на 100% на стороне сервера?

Как насчет создания некоторых сценариев оболочки? Как развернуть проект вручную? Какие шаги? Существуют ли какие-либо руководства, которые не предполагают, что я знаю все детали развертывания Rails?

Спасибо!


person Apollo    schedule 09.10.2012    source источник


Ответы (2)


Возможно, вы ищете хук git post-receive (руководство можно найти здесь: http://toroid.org/ams/git-website-howto).

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

  1. checkout HEAD commit из репозитория git (git checkout -f, см. связанное руководство)
  2. беги bundle install
  3. запустить bundle exec rake db:migrate - предполагается, что вы уже создали свою БД
  4. перезапустите / запустите кластер тонких серверов (не уверен, что именно здесь, если он похож на пассажирский, который я использую, эта операция просто для создания некоторого файла restart.txt) - я предполагаю, что у вас есть ваш nginx в качестве обратного прокси-сервера перед ним, правильно ?

Это длинная история. Это немного сложнее, например. если вы используете конвейер ассетов (rails >= 3.1), вы хотели бы предварительно скомпилировать свои ассеты и т. д. Но это хорошая отправная точка.

person Inza    schedule 09.10.2012
comment
Возможно, это связанный с этим вопрос SO... постановка"> stackoverflow.com/questions/3838727/ - person Inza; 09.10.2012

Что ж, мне удалось почти полностью привести его в рабочее состояние.

Основные действия, которые я мог проследить до сих пор:

  • Пользователь нажимает на ствол, должен использовать git hooks для запуска следующих шагов с помощью скрипта.

Скрипт должен сделать следующее:

  • Клонируйте проект в папку /var/www;
  • Вставьте «тонкий» гем в Gemfile;
  • Запустите команду 'bundle' в папке приложения;
  • Предварительно скомпилируйте ресурсы в папке приложения;
  • Перенести базу данных;
  • Остановить nginx и тонкий;
  • Перезапустите тонкий и nginx снова.

Если приложение новое, мы также должны:

  • Создайте нового пользователя, который соответствует информации базы данных;
  • Создать производственную базу данных;
  • Вставьте новый файл конфигурации nginx;
  • Экспортируйте тонкую конфигурацию из папки приложения, например:

thin config -C /etc/thin/app.yml -c /var/www/app --servers 1 -e production

Последовательность действий примерно такая:

$ bundle package
$ bundle install --deployment
$ RAILS_ENV=production rake db:migrate
$ rake assets:precompile
$ thin start -C /etc/thin/app.yml

Это основное на данный момент. Я хочу, чтобы это работало на 100%, а затем я хочу разместить руководство в Интернете.

Обновлять

Руководство, которое я обещал сделать:

https://github.com/sentient06/RDH/wiki

person Apollo    schedule 02.11.2012