Symfony2 site deployment using Capifony

Symfony2 site deployment using Capifony

Capifony is a smart and convenient tool to deploy Symfony sites. It’s based on Capistrano and is written by Konstantin Kudryashov. Basic information on working with Capifony can be gleaned from the official site and the short article "Deploy Symfony Application Painlessly with Capifony".

I advise you to start deploying symfony2 with capifony it on the server manually and make sure everything is configured and operating correctly (especially the script app / console). For example, I found some incorrect ways for the git sub modules and failed to deploy the site from the first turn.

Below the cut is a Capifony config to deploy this site and my comments to it.

# Basic configuration is created after the launch of "capifony ." in the project folder.
# Name of the application
set :application, "stfalcon"
# To this domain the script will be connected via ssh
set :domain,      "#{application}.com"
# Deploy a website in the directory /var/www/
set :deploy_to,   "/var/www/#{domain}"
# This path will be used below
set :app_path,    "app"
# Path to git repository
set :repository,  "git://"
# Type of storage
set :scm,         :git
# Several bundles are connected as sub modules. While deploying symfony2 websites with capifony they also need to be initialized and updated
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
# Value for the Capistrano pseudo-terminal. 
# The default value was wrong
default_run_options[:pty] = true
# How many releases are to be stored when you start removing old releases "deploy: cleanup"
set  :keep_releases,  3
# The user under which we unfold the site on the server
# When the site owner was given access to ssh, we finally got fine deploy
set  :user,       "stfalcon-com"
# sudo was disabled. Now let deploy from the owner
set  :use_sudo,   false
# Run script ./bin/vendors --update to update vendors libraries
set :update_vendors, true
# We’ll have something like "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
# Files that are stored in the folder shared and are copied with each release
# For example, in ./shared/app/config/parameters.ini are stored settings for the database access
# and the password for the admin
set :shared_files,      ["app/config/parameters.ini"]
# Folders that are stored in the folder shared and are copied with each release
# For example, logs folder for downloading files, folders with vendors libraries
set :shared_children,     [app_path + "/logs", web_path + "/uploads", web_path + "/bundles", "vendor"]
# Run command ./app/cache assetic: dump
set :dump_assetic_assets, true

So, that's all about using capifony for Symfony apps deployment. After that, the process of updating production becomes very simple. Good luck and be patient ;).