Ответ 1
Ну, не нужно использовать capistrano - это благословение:-). Я стал не любить, но, честно говоря, он стал намного лучше, и документ https://github.com/capistrano/capistrano/wiki/ затрагивает большинство ваших проблем - раздел о RVM может быть достаточным в качестве альтернативы rbenv. Ваша конфигурация должна в значительной степени работать с готовым файлом capfile.
EDIT: да, вам нужно будет пометить себя, но ключ должен думать о методах, которые вы пишете в capfile, как о просто командах системы (помните, что у вас, вероятно, нет обычного пути оболочки и другой среды). Следуйте примерам других команд git, и все будет в порядке.
EDIT: лучший ответ (возможно: -)
- Перейдите сюда: https://github.com/capistrano/capistrano/wiki/2.x-From-The-Beginning
-
gem install capistrano
(заметьте, обычно это не принадлежит вашему Gemfile) - cd
-
capify .
Создаетapp/Capfile
иapp/config/deploy.rb
- Вы используете конвейер активов, так что в Capfile uncomment
load 'deploy/assets'
- Теперь посмотрим на deploy.rb
- имя приложения - это имя типа "my_application" Репозиторий
- - это URL-адрес вашего репозитория управления исходным кодом, например.
[email protected]:yourrepo/yourproj.git
-
scm: git
(правильно? Если нет, та же идея: URL выше и это для SVN или что-то еще) -
role :web "www.example.com"
, и поскольку ваши: db и: app находятся на одной коробке, те же - вы используете Passenger, поэтому раскомментируйте строки как указано.
- не уверен, но вам может потребоваться
require "bundler/capistrano"
вверху - вам понадобится
set :deploy_to, <remote installation path>
возможно"/var/www"
- следуйте другим шагам руководства.
- гипотетически после этих шагов и шагов, которые я пропустил, проверьте все это и убедитесь, что ваше приложение проверено (и нажато, если git), и выполните
cap deploy:setup
Гипотетически, настройка настроит ваш сервер соответственно. Скорее всего, ошибка здесь в том, что ваш текущий компьютер нуждается в разрешениях для ssh на удаленном компьютере, а удаленной машине нужен доступ к репозиторию управления версиями. Открытые ключи - ваш друг.
После этого рабочий процесс:
- внести изменения
- проверить локально
- совершить и нажать на git
-
cap deploy migrations
(часть миграции необходима, только если вы это сделали)
В большинстве организаций есть какие-то промежуточные или тестовые серверы. Найдите "многоступенчатый", чтобы получить его, чтобы вы могли делать cap test deploy
и cap staging deploy
и т.д.
Чтобы развернуть ветку (и я думаю, что тег) на git it cap -S <branch/tagname> deploy
(убедитесь, что ее капитал S может быть строчным).
Как только вы это сделаете, возможно, вам захочется сделать до или после развертывания - например, отправку электронной почты, восстановление карты сайта, резервное копирование базы данных и т.д. Используйте перед или после перехвата, чтобы написать свои собственные задачи.
Таким образом, самая худшая часть capistrano заключается в том, что все документы предполагают, что вы знаете, какого черта он делает. В двух словах он использует ssh (ruby net-ssh) для выполнения команд на удаленном сервере с любой локальной рабочей станции, из которой вы развертываете. Он смотрит на голову вашего исходного дерева (или тега или ветки, если указан), вытаскивает его в новое место на вашем сервере, делает что-либо еще (миграция, предварительная компиляция активов) и получает приложение в готовность; как только он выглядит хорошо, он изменяет символическую ссылку (например, /var/www/current
, чтобы указать на новое местоположение, а затем (в случае с пассажиром) вызывает touch app/tmp/restart.txt
, чтобы заставить сервер перезагрузиться.
лучше?