Capistrano — это фреймворк для создания автоматизированных сценариев развёртывания. Хотя сам Capistrano написан на Ruby, его можно легко использовать для развёртывания проектов на любом языке или фреймворке, будь то Rails, Java или PHP.
После установки Capistrano предоставляет вам инструмент cap
для выполнения развёртываний прямо из командной строки.
$ cd my-capistrano-enabled-project
$ cap production deploy
При запуске cap
Capistrano добросовестно подключается к вашим серверам через SSH и выполняет шаги, необходимые для развёртывания вашего проекта. Вы можете определить эти шаги самостоятельно, написав задачи Rake или используя готовые библиотеки задач, предоставленные сообществом Capistrano.
Задачи создавать просто. Вот пример:
task :restart_sidekiq do
on roles(:worker) do
execute :service, "sidekiq restart"
end
end
after "deploy:published", "restart_sidekiq"
Примечание: эта документация предназначена для текущей версии Capistrano (3.x). Если вы ищете документацию по Capistrano 2.x, вы можете найти её в этом архиве.
Существует множество способов автоматизации развёртываний, от простых скриптов rsync bash до сложных контейнерных инструментальных цепочек. Capistrano находится где-то посередине: он автоматизирует то, что вы уже знаете, как делать вручную с помощью SSH, но повторяемым и масштабируемым образом. Здесь нет никакой магии!
Вот что делает Capistrano великолепным:
Capistrano определяет стандартный процесс развёртывания, которому следуют все проекты, поддерживающие Capistrano, по умолчанию. Вам не нужно решать, как структурировать свои скрипты, куда размещать развёрнутые файлы на сервере или как выполнять общие задачи: Capistrano уже сделал эту работу за вас.
Определите своё развёртывание один раз, а затем легко параметризуйте его для нескольких этапов (сред), например, qa
, staging
и production
. Копирование и вставка не требуется: вам нужно только указать, что отличается для каждого этапа, например IP-адреса.
Развёртывание на флоте серверов приложений? Capistrano может запускать каждую задачу развёртывания одновременно на этих серверах и использует пул соединений для скорости.
Вашему приложению может потребоваться много разных типов серверов: сервер базы данных, сервер приложений, два веб-сервера и сервер очереди заданий, например. Capistrano позволяет пометить каждый сервер одной или несколькими ролями, чтобы вы могли контролировать, какие задачи выполняются где.
Capistrano легко расширяется с помощью менеджера пакетов rubygems. Развёртывание приложения Rails? Wordpress? Laravel? Скорее всего, кто-то уже написал задачи Capistrano для выбранной вами платформы и распространил их в виде гема. Многие проекты Ruby также поставляются со встроенными задачами Capistrano.
Всё в Capistrano сводится к выполнению команд SSH на удалённых серверах. С одной стороны, это делает Capistrano простым. С другой стороны, если вы не чувствуете себя комфортно, подключаясь к Linux-компьютеру по SSH и работая в командной строке, то Capistrano, вероятно, не для вас.
Хотя Capistrano поставляется с набором строгих соглашений, которые являются общими для всех типов развёртываний, ему нужна помощь в понимании специфики вашего проекта, и там... Вот перевод текста на русский язык:
Что Capistrano не умеет делать
Из коробки Capistrano может развернуть ваш код на сервере (серверах), но он не знает, как выполнить ваш код. Нужно ли запускать foreman? Нужно ли перезапускать Apache? Вам нужно будет сообщить Capistrano, как это сделать, написав эти шаги развёртывания самостоятельно или найдя гем в сообществе Capistrano, который сделает это за вас.
Capistrano зависит от подключения к вашему серверу (серверам) через SSH с использованием аутентификации на основе ключей (т. е. без пароля). Вам понадобится это, прежде чем вы сможете использовать Capistrano.
Аналогично, вашему серверу, вероятно, потребуется установить вспомогательное программное обеспечение, прежде чем вы сможете выполнить развёртывание. Сам Capistrano не имеет никаких требований, кроме SSH, но вашему приложению, вероятно, потребуются программное обеспечение базы данных, веб-сервер, такой как Apache или Nginx, и среда выполнения языка, такая как Java, Ruby или PHP. Эти шаги подготовки сервера не выполняются Capistrano.
Capistrano предназначен для развёртывания с использованием одного непривилегированного пользователя SSH в неинтерактивном сеансе SSH. Если ваше развёртывание требует sudo, интерактивных запросов, аутентификации как одного пользователя, но выполнения команд как другого, вы, вероятно, сможете сделать это с помощью Capistrano, но это может быть сложно. Ваши автоматизированные развёртывания будут намного более плавными, если вы сможете избежать таких требований.
Capistrano 3 ожидает POSIX-совместимую оболочку, такую как Bash или Sh. Оболочки, такие как tcsh, csh и подобные, могут работать, но, вероятно, нет.
Добавьте Capistrano в Gemfile вашего проекта с помощью require: false:
group :development do
gem "capistrano", "~> 3.17", require: false
end
Затем запустите Bundler, чтобы убедиться, что Capistrano загружен и установлен:
$ bundle install
Убедитесь, что в вашем проекте ещё нет файла «Capfile» или «capfile». Затем запустите:
$ bundle exec cap install
Это создаёт все необходимые файлы конфигурации и структуру каталогов для проекта с поддержкой Capistrano с двумя этапами, staging и production:
├── Capfile
├── config
│ ├── deploy
│ │ ├── production.rb
│ │ └── staging.rb
│ └── deploy.rb
└── lib
└── capistrano
└── tasks
Чтобы настроить создаваемые этапы, используйте:
$ bundle exec cap install STAGES=local,sandbox,qa,production
Обратите внимание, что файлы, которые создаёт Capistrano, являются просто шаблонами, чтобы вы начали работу. Обязательно отредактируйте файлы deploy.rb и stage, чтобы они содержали значения, подходящие для вашего проекта и целевых серверов.
# список всех доступных задач
$ bundle exec cap -T
# развернуть в промежуточной среде
$ bundle exec cap staging deploy
# развернуть в рабочей среде
$ bundle exec cap production deploy
# смоделировать развёртывание в рабочей среде
# фактически ничего не делает
$ bundle exec cap production deploy --dry-run
# список зависимостей задач
$ bundle exec cap production deploy --prereqs
# проследить выполнение задач
$ bundle exec cap production deploy --trace
# выводит все переменные конфигурации перед задачами развёртывания
$ bundle exec cap production deploy --print-config-variables
Capistrano — это большой проект, охватывающий несколько репозиториев GitHub и сообщество плагинов, и он может показаться ошеломляющим, когда вы только начинаете. Вот ресурсы, которые могут помочь:
Каталог docs содержит официальную документацию, и используется для создания веб-сайта Capistrano
Stack Overflow — вопросы и ответы о Capistrano на Stack Overflow
Форум Capistrano — форум пользователей Capistrano Overflow] (http://stackoverflow.com/questions/tagged/capistrano) имеет тег Capistrano с большой активностью.
Список рассылки Capistrano характеризуется низким трафиком, но за ним следят участники Capistrano.
На CodersClan есть эксперты по Capistrano, готовые решать проблемы за вознаграждение.
Связанные репозитории GitHub:
execute
в задаче Capistrano, вы используете SSHKit).Проблемы GitHub предназначены для отчётов об ошибках и запросов функций. Пожалуйста, обратитесь к документу CONTRIBUTING для получения рекомендаций по отправке проблем GitHub.
Если вы считаете, что обнаружили уязвимость безопасности в Capistrano, не открывайте проблему GitHub. Вместо этого отправьте отчёт на адрес security@capistranorb.com.
Вклады в Capistrano в виде кода, документации или идеи приветствуются. Прочитайте документ DEVELOPMENT, чтобы узнать, как взломать код Capistrano, запустить тесты и отправить свой первый запрос на вытягивание.
Лицензия MIT (MIT)
Авторские права (c) 2012-2020 Том Клементс, Ли Хэмбли
Настоящим предоставляется разрешение любому лицу, получившему копию данного программного обеспечения и сопутствующих файлов документации («Программное обеспечение»), на работу с Программным обеспечением без ограничений, включая, помимо прочего, право использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Приведённое выше уведомление об авторских правах и настоящее разрешение должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ КОНКРЕТНОЙ ЦЕЛИ И НАЛИЧИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, ВОЗНИКАЮЩИЕ ИЗ, В РЕЗУЛЬТАТЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )