постановочное и живое приложение с капистрано

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

20120519235508 
20120521004833 
20120521024312 <-- live
20120521025150 
20120521030449 <-- current 

Затем я настроил www.mysite.com так, чтобы

live/public 

и stage.mysite.com, чтобы попасть

current/public

К сожалению, на обоих хостах работает одно и то же приложение, а не два разных приложения. Я убедился, что httpd.conf имеет правильные настройки, и перезапустил его. Однако без изменений, они оба по-прежнему работают с одним и тем же приложением, а именно с приложением, на которое ссылается current/public.

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

Может кто-нибудь пролить свет на эту тему, потому что эта конфигурация была бы ОЧЕНЬ полезной для меня во многих проектах.


person pixelearth    schedule 21.05.2012    source источник


Ответы (1)


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

Добавьте эти строки в deploy.rb:

require "capistrano/ext/multistage"

set :stages, ["staging", "production"]
set :default_stage, "staging"

Удалите переменную deploy_to из deploy.rb. Затем создайте каталог развертывания внутри конфигурации, в котором есть файлы с именами этапов. В данном случае: deploy/staging.rb и deploy/production.rb. Содержимое staging.rb:

set :rails_env, "staging"
set :deploy_to, "staging/capistrano"

И аналогично для production.rb:

set :rails_env, "production"
set :deploy_to, "production/capistrano"

Конечно, измените пути в deploy_to. Затем укажите staging.example.com на staging/capistrano/current/public и www.example.com на production/capistrano/current/public.

Чтобы выполнить промежуточное развертывание, выполните cap staging deploy или простое cap deploy (помните, что промежуточное развертывание было установлено по умолчанию в deploy.rb) и cap production deploy для развертывания в рабочей среде.

person Gergo Erdosi    schedule 21.05.2012
comment
Герго, это правильный путь. Спасибо тебе за это. Я также решил проблему выше, кстати, это было из-за PassengerAppRoot в файле .htaccess. - person pixelearth; 21.05.2012
comment
кажется, вы не упомянули, что я должен установить гем capistrano-ext? - person pixelearth; 21.05.2012
comment
Возможно. Он уже был доступен в моей системе (OS X), когда я начал его использовать, я не помню, чтобы мне приходилось устанавливать его вручную. - person Gergo Erdosi; 23.05.2012