Ну, не нужно использовать capistrano, это благословение :-). Мне это не нравилось, но, честно говоря, оно стало много лучше, и документ здесь https://github.com/capistrano/capistrano/wiki/ решает большинство ваших проблем - раздел по RVM может быть достаточным в качестве альтернативы rbenv. Ваша конфигурация должна в значительной степени работать с готовым файлом capfile.
РЕДАКТИРОВАТЬ: да, вам нужно будет сделать тегирование самостоятельно, но ключ должен думать о методах, которые вы пишете в capfile, просто как о системных командах (помня, что у вас, вероятно, нет вашего обычного пути оболочки и другой среды) ). Следуйте примерам других команд git, и все будет в порядке.
РЕДАКТИРОВАТЬ: Лучший ответ (может быть: -)
- иди сюда: https://github.com/capistrano/capistrano/wiki/2.x-From-The-Beginning
gem install capistrano
(обратите внимание, обычно это не относится к вашему Gemfile)
- кд
capify .
Создает app/Capfile
и app/config/deploy.rb
- Вы используете конвейер ресурсов, поэтому в Capfile раскомментируйте
load 'deploy/assets'
- Теперь посмотрите на deploy.rb
- имя приложения - это имя типа "my_application"
- репозиторий - это URL-адрес вашего репозитория с контролем исходного кода, например,
myusername@github.com: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, это cap -S <branch/tagname> deploy
(убедитесь, что это заглавная буква S, может быть строчная).
Как только вы начнете это делать, вероятно, есть вещи, которые вы захотите сделать до или после развертывания - например, отправка электронной почты, восстановление карты сайта, резервное копирование базы данных и так далее. Используйте хуки «до» или «после» для написания собственных задач.
Так что худшая часть капистрано состоит в том, что все доктора предполагают, что вы знаете, какого черта он делает. В двух словах, он использует ssh (ruby's net-ssh) для выполнения команд на удаленном сервере с любой локальной рабочей станции, с которой вы развертываете. Он просматривает заголовок вашего исходного дерева (или тег или ветвь, если он указан), перетаскивает его в новое место на вашем сервере, делает что-то еще (миграция, прекомпиляция ресурсов) и готовит приложение; как только он выглядит хорошо, он меняет символическую ссылку (например, /var/www/current
, чтобы указать новое местоположение, а затем (в случае Пассажира) вызывает touch app/tmp/restart.txt
, чтобы вызвать перезапуск сервера.
лучше?