Деплоймент сайта на Symfony2 при помощи Capifony

Деплоймент сайта на Symfony2 при помощи Capifony

Capifony — это удобная тулза для деплоя сайтов на Symfony. Базируется она на Capistrano и написана Константином Кудряшовым. Основную информацию по работу с Capifony можно почерпнуть из офф. сайта capifony.org и заметки «Deploy Your Symfony Application Painlessly with Capifony».

Советую для начала развернуть его на сервере вручную и убедиться, что все настроено и нормально работает (особенно скрипт app/console). Например, у меня оказались некорректные пути для git сабмодулей и сходу задеплоить сайт не получилось.

Под катом конфиг Capifony для деплоймента этого сайта и мои комментарии к нему.

# базовый конфиг создается после запуска "capifony ." в папке проекта.
# название приложения
set :application, "stfalcon"
# к этому домену скрипт будет коннектиться по ssh
set :domain,      "#{application}.com"
# разворачиваем сайт в директории /var/www/stfalcon.com
set :deploy_to,   "/var/www/#{domain}"
# этот путь будет использоваться ниже
set :app_path,    "app"
 
# путь к git репозиторию
set :repository,  "git://github.com/stfalcon/portfolio.git"
# тип хранилища
set :scm,         :git
# несколько бандлов подключены как сабмодули. при деплое их тоже нужно инициализировать и обновлять
set :git_enable_submodules, 1
 
role :web,        domain                         # Your HTTP server, Apache/etc
role :app,        domain                         # This may be the same as your `Web` server
role :db,         domain, :primary => true       # This is where Rails migrations will run
 
# значение для псевдо-терминала Capistrano. 
# с дефолтным значением получалась ошибка
default_run_options[:pty] = true
 
# сколько релизов хранить при запуске удаления старых релизов "deploy:cleanup"
set  :keep_releases,  3
# пользователь под которым разворачиваем сайт на сервере
# когда дали владельцу сайта доступ к ssh, то все нормально задеплоилось
set  :user,       "stfalcon-com"
# sudo отключили. деплоим из под владельца
set  :use_sudo,   false
 
# запускает скрипт ./bin/vendors --update для обновления библиотек вендоров
set :update_vendors, true
# как-то так "In this case, rsync will create a cache on your production server 
# and will push only files that have changed between deploys."
set :deploy_via, :rsync_with_remote_cache
 
# файлы которые хранятся в папке shared и копируются при каждом релизе
# например, в ./shared/app/config/parameters.ini хранятся настройки доступа к БД
# и пароль к админке
set :shared_files,      ["app/config/parameters.ini"]
# папки которые хранятся в папке shared и копируются при каждом релизе
# например, логи, папка для загрузки файлов, папка с библиотеками вендоров
set :shared_children,     [app_path + "/logs", web_path + "/uploads", web_path + "/bundles", "vendor"]
# запускает команду ./app/cache assetic:dump
set :dump_assetic_assets, true

Главное домучить деплой сайта на Symfony2 c помощью Capifony до первого удачного результата. После этого процесс обновления production становится очень простым. Удачи вам и терпения ;).