Настройка развёртывания 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: ,

Добавить комментарий