Развёртывание – один из ключевых аспектов производства веб-приложений.
Но как именно развернуть приложение? Некоторые разработчики недооценивают эту задачу. Однако хорошо проработанный процесс развертывания помогает снизить расходы ресурсов и занимает меньше времени.
Данное руководство поможет разобраться с 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 полностью готов к развёртыванию приложений.