Site icon 8HOST.COM

Автоматизация развёртываний с помощью Capistrano

Развёртывание – один из ключевых аспектов производства веб-приложений.

Но как именно развернуть приложение? Некоторые разработчики недооценивают эту задачу. Однако хорошо проработанный процесс развертывания помогает снизить расходы ресурсов и занимает меньше времени.

Данное руководство поможет разобраться с Capistrano, инструментом автоматизации удалённых серверов, написанным на Ruby. Его можно использовать автоматизации рутинных развертываний и задач, связанных с управлением системой. При помощи Capistrano можно практически полностью автоматизировать все действия, связанные с развёртыванием приложения.

Что такое Capistrano?

Capistrano – это основанный на Ruby открытый инструмент для управления сервером.

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

Capistrano часто используется в связке с Ruby, однако этот инструмент может взаимодействовать и с другими программами.

Язык программирования Ruby

Ruby – это динамический язык программирования общего назначения, который приобрел значительную популярность с выходом фреймворка для разработки веб-приложений Ruby-on-Rails.

Ещё одним преимуществом данного языка является простой и понятный механизм написания сценариев в Ruby.

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

Рецепты Capistrano

Рецепты в терминологии Capistrano – это файлы, содержащие директивы для развертывания (и управления) приложений и серверов. Эти рецепты можно изменять и настраивать для поддержки различных языков, не связанных с Ruby или Rails. По сути, это сценарии, которые Capistrano использует для выполнения своих действий.

Управление системой и сервером

Данный раздел приводит несколько примеров использования Capistrano.

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

Когда приложение набирает популярность, возникает необходимость добавления и настройки новых серверов. Эта рутинная работа отнимает немало времени. Capistrano может взять на себя большинство этих задач (а в некоторых случаях и все задачи).

Развёртывание приложения

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

Для этого существует набор команд, который нужно выполнять. Эти задачи можно добавить в логически организованный сценарий и сэкономить таким образом огромное количество времени.

Установка Capistrano

Примечание: Данное руководство поможет установить Capistrano на сервер CentOS 6.5. Инструкции действительны и для других дистрибутивов (например, в Ubuntu), однако в таком случае рекомендуется обратиться к официальному мануалу программы.

Подготовка системы

Чтобы установить Ruby и Capistrano, нужно подготовить сервер CentOS и установить инструменты разработки.

Обновите систему:

yum -y update

Установите инструменты разработки:

yum groupinstall -y ‘development tools’

Установка Ruby

Для загрузки и установки Ruby используйте менеджер пакетов RVM.

Чтобы установить RVM и создать окружение для Ruby, введите:

curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

Затем установите Ruby 2.1.0:

rvm reload
rvm install 2.1.0

Чтобы убедиться, что загрузка прошла успешно, запустите:

ruby --version
# ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux]

Установка Capistrano

Теперь можно приступать к установке Capistrano. Программа поставляется как RubyGem.

Чтобы установить Capistrano, введите:

gem install capistrano

Чтобы получить наиболее актуальную версию программы, обратитесь к Github:

git clone https://github.com/capistrano/capistrano.git
cd capistrano
gem build *.gemspec
gem install *.gem

Чтобы убедиться, что установка Capistrano прошла успешно, запросите версию программы:

cap --version
# Capistrano Version: 3.1.0 (Rake Version: 10.1.0)

Основы работы с Capistrano

Итак, все компоненты готовы. Пора ознакомиться с основами работы Capistrano.

Для начала нужно поместить проект во внешний репозиторий Git. Для этого можно использовать Github.

Примечание: Команда Capistrano не рекомендует размещать конфиденциальные данные в таких репозиториях.

Установка Capistrano в проекте

Установка Capistrano 3 несколько отличается от установки Capistrano 2. Данный процесс состоит из таких команд:

# Usage:
# Enter the project directory: cd [project-name] # Initiate Capistrano:         cap install
cd  myapp
cap install

Создание пользователей Capistrano для развёртывания

При развёртывании проектов рекомендуется использовать рецепты при помощи обычных пользователей (не root). Создайте группу deployers и передайте её права доступа.

groupadd deployers

Добавьте в эту группу пользователей; к примеру, чтобы добавить пользователя deployer :

# Usage: sudo usermod -a -G deployers [name] sudo usermod -a -G deployers deployer

Чтобы передать группе все необходимые права доступа, нужно отредактировать следующий файл:

nano /etc/sudoers

Добавьте в него строку:

..
## Allows people in group wheel to run all commands
%deployers      ALL=(ALL) ALL
..

Готово! Инструмент Capistrano полностью готов к развёртыванию приложений.