Я бы порекомендовал внешнюю систему деплоя, например
github.com/capistrano/capistrano
Вот мой конфиг для проекта на symfony2:
set :application, "appname"
set :deploy_to, "/var/www/#{application}"
set :repository, "git@github.com:vslinko/#{application}.git"
set :scm, :git
set :shared_files, ["app/config/parameters.yml"]
set :shared_children, ["app/logs", "web/uploads", "vendor"]
set :asset_children, []
set :user, "www-data"
set :use_composer, true
set :update_vendors, false
set :domain, "symfony.slinko.me"
role :app, domain
task :production do
set :domain, "appname.com"
role :app, domain
end
После чего
cap deploy
на тестовый сервер, а
cap production deploy
на рабочий