Настройка развёртывания Capistrano
В предыдущем руководстве этой серии была создана базовая структура для развертывания приложения. Теперь можно переходить к самому процессу развертывания. Для начала нужно изменить некоторые параметры настроек, а затем развернуть приложение.
Файл deploy.rb
На данный момент файл deploy.rb имеет такой вид:
set :application, "domain.com"
set :user, "username"
set :repository, "svn+MyTestProject1ssh://12.34.56.789/home/username/repository/MyTestProject1"
# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"
set :port, 30000
set :deploy_to, "/home/demoDir/public_html/#{application}"
# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion
role :app, application
role :web, application
role :db, application , :primary => true
Рассмотрим процесс развёртывания подробнее и определим его требования.
Настройка Subversion
Система управления версиями Subversion должна быть уже установлена. Выполняя стандартное развертывание, Capistrano выполняет команды на сервере и ищет последнюю версию в репозитории. Но в данном сценарии взаимодействие сервера и репозитория не было настроено, поскольку в таком случае на сервере необходимо создать закрытый ключ для доступа без пароля, а это может негативно отразиться на безопасности.
Потому в данном случае рабочий процесс будет выглядеть следующим образом:
- Последняя версия проверяется в удалённом репозитории.
- После этого она сжимается.
- Затем она передаётся на сервер по SSH.
- И распаковывается.
Такой процесс развёртывания занимает на несколько секунд больше, но повышает уровень безопасности.
Чтобы инструмент Capistrano мог использовать эту стратегию, нужно добавить в файл deploy.rb следующее:
set :deploy_via, :copy
Создание пользователя для mongrel
Теперь нужно подготовить пользователя для запуска экземпляров mongrel. Без такого пользователя скрипт не сработает. Можно использовать подготовленного ранее пользователя.
set :runner, user
После всех изменений файл deploy.rb выглядит так:
set :application, "domain.com"
set :user, "demo"
set :repository, "svn+MyTestProject1ssh://12.34.56.789/home/usernamer/repository/MyTestProject1"
# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"
set :port, 30000
set :deploy_to, "/home/username/public_html/#{application}"
# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion
role :app, application
role :web, application
role :db, application , :primary => true
set :deploy_via, :copy
set :runner, user
Начальная стадия развёртывания
Итак, теперь всё готово к развёртыванию. Осталось только указать, как запускать mongrel на начальном этапе развертывания. Это можно сделать с помощью файла spin, расположенного в папке scripts. Создайте его на рабочей станции.
touch script/spin
Этот файл будет содержать команды, при помощи которых Capistrano будет управлять mongrels.
Теперь нужно установить его параметр в Subversion, чтобы предоставить файлу все необходимые для выполнения права.
svn propset svn:executable on script/spin
Поместите в файл следующую строку:
/home/username/public_html/domain.com/current/script/process/spawner -p 8000 -i 2 -e production
Коммиты
Выполните следующую команду, чтобы узнать, какие файлы нужно добавить в Subversion, а затем добавьте их.
svn status
Можно добавить также и файл spin.
svn add script/spin
Отправьте коммиты об изменениях в репозитории subversion.
svn commit -m "added script/spin"
Чтобы приложение было доступно по домену, нужно создать для него индивидуальный виртуальный хост.
Развертывание
Чтобы впервые развернуть приложение, используйте следующую команду:
cap deploy:cold
В терминале появится большое количество информации. Как видите, в процессе развёртывания инструмент Capistrano выполнил все необходимые действия:
- Capistrano нашёл последний код в Subversion.
- Затем код был сжат и помещён во временный файл.
- После этого код был загружен
- Распакован.
- Затем Capistrano скопировал код и создал символические ссылки.
- Наконец, Capistrano запустил два экземпляра mongrel, указанные файле spin.
Процесс создания виртуального хоста для приложения может показаться немного запутанным. По умолчанию инструмент Capistrano не предназначен для установки и настройки веб-серверов. Но он позволяет использовать для развертывания и обслуживания приложения уже существующие настройки.
Tags: Capistrano, Subversion