1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Capistrano

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Capistrano: инструмент автоматизации развёртывания на основе Ruby, Rake и SSH

Gem Version Build Status Code Climate CodersClan

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.

Это просто SSH

Всё в Capistrano сводится к выполнению команд SSH на удалённых серверах. С одной стороны, это делает Capistrano простым. С другой стороны, если вы не чувствуете себя комфортно, подключаясь к Linux-компьютеру по SSH и работая в командной строке, то Capistrano, вероятно, не для вас.

Проблемы

Хотя Capistrano поставляется с набором строгих соглашений, которые являются общими для всех типов развёртываний, ему нужна помощь в понимании специфики вашего проекта, и там... Вот перевод текста на русский язык:

Что Capistrano не умеет делать

Специфика проекта

Из коробки Capistrano может развернуть ваш код на сервере (серверах), но он не знает, как выполнить ваш код. Нужно ли запускать foreman? Нужно ли перезапускать Apache? Вам нужно будет сообщить Capistrano, как это сделать, написав эти шаги развёртывания самостоятельно или найдя гем в сообществе Capistrano, который сделает это за вас.

Аутентификация по ключу SSH

Capistrano зависит от подключения к вашему серверу (серверам) через SSH с использованием аутентификации на основе ключей (т. е. без пароля). Вам понадобится это, прежде чем вы сможете использовать Capistrano.

Подготовка сервера

Аналогично, вашему серверу, вероятно, потребуется установить вспомогательное программное обеспечение, прежде чем вы сможете выполнить развёртывание. Сам Capistrano не имеет никаких требований, кроме SSH, но вашему приложению, вероятно, потребуются программное обеспечение базы данных, веб-сервер, такой как Apache или Nginx, и среда выполнения языка, такая как Java, Ruby или PHP. Эти шаги подготовки сервера не выполняются Capistrano.

sudo и т. д.

Capistrano предназначен для развёртывания с использованием одного непривилегированного пользователя SSH в неинтерактивном сеансе SSH. Если ваше развёртывание требует sudo, интерактивных запросов, аутентификации как одного пользователя, но выполнения команд как другого, вы, вероятно, сможете сделать это с помощью Capistrano, но это может быть сложно. Ваши автоматизированные развёртывания будут намного более плавными, если вы сможете избежать таких требований.

Оболочки

Capistrano 3 ожидает POSIX-совместимую оболочку, такую как Bash или Sh. Оболочки, такие как tcsh, csh и подобные, могут работать, но, вероятно, нет.

Быстрый старт

Требования

  • Ruby версии 2.0 или выше на вашем локальном компьютере (MRI или Rubinius)
  • Проект, использующий систему контроля версий (встроена поддержка Git, Mercurial и Subversion)
  • Бинарные файлы SCM (например, git, hg), необходимые для проверки вашего проекта, должны быть установлены на серверах, на которые вы развёртываете
  • Рекомендуется Bundler вместе с Gemfile для вашего проекта

Установите гем Capistrano

Добавьте 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 и сообщество плагинов, и он может показаться ошеломляющим, когда вы только начинаете. Вот ресурсы, которые могут помочь:

Связанные репозитории GitHub:

  • capistrano/sshkit предоставляет поведение SSH, лежащее в основе Capistrano (когда вы используете execute в задаче Capistrano, вы используете SSHKit).
  • Capistrano/rails — очень популярный гем, который добавляет задачи развёртывания Ruby on Rails.
  • mattbrictson/airbrussh обеспечивает форматирование журнала Capistrano по умолчанию.

Проблемы GitHub предназначены для отчётов об ошибках и запросов функций. Пожалуйста, обратитесь к документу CONTRIBUTING для получения рекомендаций по отправке проблем GitHub.

Если вы считаете, что обнаружили уязвимость безопасности в Capistrano, не открывайте проблему GitHub. Вместо этого отправьте отчёт на адрес security@capistranorb.com.

Как внести свой вклад

Вклады в Capistrano в виде кода, документации или идеи приветствуются. Прочитайте документ DEVELOPMENT, чтобы узнать, как взломать код Capistrano, запустить тесты и отправить свой первый запрос на вытягивание.

Лицензия

Лицензия MIT (MIT)

Авторские права (c) 2012-2020 Том Клементс, Ли Хэмбли

Настоящим предоставляется разрешение любому лицу, получившему копию данного программного обеспечения и сопутствующих файлов документации («Программное обеспечение»), на работу с Программным обеспечением без ограничений, включая, помимо прочего, право использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:

Приведённое выше уведомление об авторских правах и настоящее разрешение должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ КОНКРЕТНОЙ ЦЕЛИ И НАЛИЧИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, ВОЗНИКАЮЩИЕ ИЗ, В РЕЗУЛЬТАТЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-Capistrano.git
git@api.gitlife.ru:oschina-mirror/mirrors-Capistrano.git
oschina-mirror
mirrors-Capistrano
mirrors-Capistrano
master