Директно внедряване на Rails

Нов съм в ruby ​​и искам да науча повече за това как работи. Така че тествах сървърна конфигурация във виртуална машина, за да направя бързо внедряване на Rails.

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

Сега искам да вържа всичко заедно. Заседнах обаче в процеса на внедряване.

След като ангажирам проекта към Git trunk, искам да закача действие за внедряване, за да поставя приложението на правилното място, да го настроя за производство, да инсталирам пакетите, да направя миграциите и да рестартирам Nginx.

Но не успявам да намеря прости препратки за това как работи. Всичко, което намирам в Google, са ръководства за използване на пасажер, капистрано и други. Искам да задействам внедряването на действието git commit, подобно на heroku, но кои биха били най-добрите инструменти за това 100% от страна на сървъра?

Какво ще кажете за създаването на някои shell скриптове? Как да разположа проект ръчно? Какви са стъпките? Има ли ръководства, които не предполагат, че знам всички подробности за внедряването на Rails?

Благодаря!


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


Отговори (2)


Мисля, че вероятно търсите, е git post-receive кука (урок може да се намери тук: http://toroid.org/ams/git-website-howto).

Чрез тази кука трябва да задействате напр. шел скрипт, който трябва да изпълни всички стъпки, от които се нуждаете - които са:

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

Това е дългата история накратко. Малко по-сложно е, напр. ако използвате тръбопровода на активи (релси >= 3.1), бихте искали да компилирате предварително вашите активи и т.н. Но горното е добра отправна точка.

person Inza    schedule 09.10.2012
comment
Може би това е свързан SO въпрос... stackoverflow.com/questions/3838727/ - person Inza; 09.10.2012

Е, успях да го направя почти напълно работещ.

Основните действия, които успях да проследя до момента са:

  • Потребителят натиска към ствола, трябва да използва git куки, за да задейства следващите стъпки с помощта на скрипт.

Скриптът трябва да прави следното:

  • Клонирайте проекта в папката /var/www;
  • Поставете „тънкия“ скъпоценен камък в Gemfile;
  • Изпълнете командата 'bundle' в папката на приложението;
  • Предварително компилирайте активите в папката на приложението;
  • Мигрирайте базата данни;
  • Спрете nginx и тънък;
  • Рестартирайте отново thin и 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