понедельник, 6 мая 2013 г.

Capistrano

Capistrano — это Open Source-ный инструмент для выполнения скриптов на нескольких серверах, который в основном используется для web приложений. Он позволяет автоматизировать процесс развертывания новой версии на одном или нескольких web серверах и включает поддержку таких задач, как например изменение базы данных.
Capistrano написан на Ruby и является «модулем» фреймворка Ruby on Rails.

Итак, допустим на нашем локальном компьютере  находится приложение(папка с файлами). У этого приложения есть git репозиторий на гитхабе с актуальным кодом. Также у нас есть хостинг  с ssh доступом, куда мы собираемся залить наши файлы. Мы не хотим постоянно возиться с ftp клиентом и решили потратить несколько часов для того, чтобы разобраться в деплойере capistrano.


Капификация


Первое что мы должны сделать после установки capistrano это «capify-нуть» наше приложение. «Капификация» — это процесс конфигурации capistrano для развертывания приложения. Он достаточно прост: убедитесь что вы находитесь в корневой директории вашего проекта и введите

  $ cd /path/deploy/from
  $ capify .

Эта команда создаст два файла:
Capfile — главный файл который нужен capistrano. Capistrano по умолчанию ищет и исполняет «Capfile». Изначально генерируемый Capfile очень прост: все что он делает — загружает «config/deploy.rb»
config/deploy.rb — файл в котором содержатся «настройки» приложения (рецепт)


Структура директорий Capistrano


Проект успешно развернутый с Capistrano будет иметь структуру похожую на приведенную ниже ( где [deploy_to] — это каталог куда мы хотим развернуть проект):

    [deploy_to]
    [deploy_to]/releases
    [deploy_to]/releases/20080819001122
    [deploy_to]/releases/...
    [deploy_to]/shared
    [deploy_to]/shared/log
    [deploy_to]/shared/pids
    [deploy_to]/shared/system
    [deploy_to]/current -> [deploy_to]/releases/20100819001122

Каждый раз когда вы будете разворачивать проект в папке «releases» будет создаваться новая директория, в которую будет копироваться его последняя версия. После этого символическая ссылка «current» обновиться и будет указывать на новую директорию. 


Multistage


В разработке также можно использовать расширение capistrano-ext, которое позволяет делать так называемый multistage. Предположим у вас есть тестовый и рабочий сервера. Вы можете написать отдельный конфиг для каждого из них и выполнять deploy только для нужного сервера.
Создаем свои рецепты: например production.rb и staging.rb. Всё что нам нужно для конфигурации — это написать в файл config/deploy.rb две строки:

    set :stages, %w(staging production)
    require 'capistrano/ext/multistage'

Теперь вы можете выполнять деплой с помощью команд «cap production deploy» и «cap staging deploy». 

Хорошая статья в догонку http://wiki.agiledev.ru/doku.php?id=automation:build_package_deploy


Комментариев нет:

Отправить комментарий