Деплоймент сайта на 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 становится очень простым. Удачи вам и терпения ;).