Skip to content

Instantly share code, notes, and snippets.

@edderrd
Forked from purwandi/deploy.rb
Last active December 23, 2015 13:09
Show Gist options
  • Save edderrd/6640684 to your computer and use it in GitHub Desktop.
Save edderrd/6640684 to your computer and use it in GitHub Desktop.
Capistrano Deployment for laravel 4

Installation

you must have capistrano installed

This Cafile could be placed on your application root directory, this is tested with laravel 4.0.x.

load "deploy"
set :application, "App Name" # Your app name
set :repository, "git@github.com:xxxxx/xxx.git" # Your git repository
set :user, "user_ssh"
set :document_root, "/home/#{user}/www/awesome_app"
set :deploy_via, :remote_cache
# SSH Settings
set :password, "password_ssh"
set :use_sudo, false
set :ssh_options, {:forward_agent => true}
set :copy_exclude, [".git",".gitignore"] # or any match like [".svn","/documents-on-repo-but-dont-deploy"]
set :keep_releases, 10 # only keep 10 version to save space
default_run_options[:pty] = true
role :app, "<server.example.com>"
role :web, "<server.example.com>"
# We need to over write a lot of the core functionality here
# since we don't need migrations, lots of the symlink stuff
# and server restarting.
# cap develop deploy:setup
# cap develop deploy:check
# cap develop deploy
task :develop do
set :branch, "develop"
set :artisan_env, "develop"
set :deploy_to, "#{document_root}/develop"
end
# cap staging deploy:setup
# cap staging deploy:check
# cap staging deploy
task :staging do
set :branch, "staging"
set :artisan_env, "stage"
set :deploy_to, "#{document_root}/staging"
end
# cap production deploy:setup
# cap production deploy:check
# cap production deploy
task :production do
set :branch, "master"
set :artisan_env, "production"
set :deploy_to, "#{document_root}/production"
end
# This is strictly for PHP deploys
namespace :deploy do
task :update do
transaction do
update_code
symlink
composer_install
laravel_migrate
end
end
task :finalize_update do
transaction do
run "chmod -R g+w #{releases_path}/#{release_name}"
end
end
task :symlink do
transaction do
run "ln -nfs #{current_release} #{deploy_to}/#{current_dir}"
end
end
task :composer_install do
desc "Install composer packages"
transaction do
run "php /usr/bin/composer install --working-dir #{deploy_to}/#{current_dir}"
end
end
task :laravel_migrate do
transaction do
run "php #{deploy_to}/#{current_dir}/artisan --env=#{artisan_env} migrate"
end
end
task :laravel_rollback do
run "php #{deploy_to}/#{current_dir}/artisan --env=#{artisan_env} migrate:rollback"
end
task :restart do
transaction do
# set writable storage dir
run "chmod -R 777 #{deploy_to}/#{current_dir}/app/storage/cache"
run "chmod -R 777 #{deploy_to}/#{current_dir}/app/storage/logs"
run "chmod -R 777 #{deploy_to}/#{current_dir}/app/storage/meta"
run "chmod -R 777 #{deploy_to}/#{current_dir}/app/storage/sessions"
run "chmod -R 777 #{deploy_to}/#{current_dir}/app/storage/views"
# remove some junk file
run "rm -f #{deploy_to}/#{current_dir}/app/storage/cache/*"
run "rm -f #{deploy_to}/#{current_dir}/app/storage/views/*"
end
end
end
after "deploy:rollback", "deploy:laravel_rollback"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment