Last active
December 15, 2015 12:19
-
-
Save j-mcnally/5259134 to your computer and use it in GitHub Desktop.
Capistrano deployment for Drupal
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #load 'deploy' if respond_to?(:namespace) # cap2 differentiator | |
| ################################## | |
| # Edit these | |
| set :application, "APPLICATION_OR_SITE_NAME" | |
| set :host, "SERVER_ADDRESS" | |
| set :repository, "YOUR_GIT_REPO" | |
| set :branch, "master" | |
| set :deploy_to, "PATH_ON_SERVER_TO_DEPLOY_TO" | |
| set :user, "YOUR_DEPLOYMENT_USER" | |
| set :owner, "WHO_NEEDS_TO_OWN_THE_FILES" | |
| set :mysql_user, "MYSQL_USER" | |
| set :mysql_password, "MYSQL_PASSWORD" | |
| set :mysql_db, "MYSQL_DATABASE" | |
| #################################### | |
| set :copy_exclude, [".git/*", ".svn/*", ".DS_Store", "config/*"] | |
| set :scm, :git | |
| set :deploy_via, :remote_cache | |
| role :app, host | |
| set :use_sudo, false | |
| set :keep_releases, 3 | |
| after "deploy:setup", "deploy:prepare_shared_paths" | |
| after "deploy:update", "deploy:send_settings" | |
| after "deploy:create_symlink", "deploy:restart" | |
| after "deploy:update", "deploy:rsync_private_files" | |
| after "deploy:update", "deploy:cleanup" | |
| before "deploy", "deploy:fix_permissions" | |
| after "deploy", "deploy:reset_permissions" | |
| before "deploy:setup", "deploy:fix_permissions" | |
| after "deploy:setup", "deploy:reset_permissions" | |
| default_run_options[:pty] = true | |
| namespace :deploy do | |
| task :prepare_shared_paths do | |
| run "mkdir -p #{shared_path}/sites" | |
| run "mkdir -p #{shared_path}/sites/all" | |
| run "mkdir -p #{shared_path}/sites/all/modules" | |
| run "mkdir -p #{shared_path}/sites/all/libraries" | |
| run "mkdir -p #{shared_path}/sites/default" | |
| run "mkdir -p #{shared_path}/sites/default/files" | |
| end | |
| task :send_settings do | |
| #CREATE A FILE IN CONFIG WITH A COPY OF YOUR SETTINGS FOR YOUR PRODUCTION BOX | |
| #THIS ALLOWS YOU TO HAVE MULTIPLE ENVIRONMENTS WITH SEPERATE MYSQL SETTINGS | |
| put File.read("config/settings_production.php"), "#{release_path}/sites/default/settings.php" | |
| end | |
| task :rsync_private_files do | |
| run "rsync -av #{release_path}/sites/default/files/ #{shared_path}/sites/default/files/" | |
| run "rsync -av #{release_path}/sites/all/modules/ #{shared_path}/sites/all/modules/" | |
| run "rsync -av #{release_path}/sites/all/libraries/ #{shared_path}/sites/all/libraries/" | |
| run "rm -rf #{release_path}/sites/default/private; return 0" | |
| run "rm -rf #{release_path}/sites/default/files" | |
| run "rm -rf #{release_path}/sites/all/modules/" | |
| run "rm -rf #{release_path}/sites/all/libraries/" | |
| run "ln -s #{shared_path}/sites/default/private #{release_path}/sites/default/private" | |
| run "ln -s #{shared_path}/sites/default/files #{release_path}/sites/default/files" | |
| run "ln -s #{shared_path}/sites/all/libraries #{release_path}/sites/all/libraries" | |
| run "ln -s #{shared_path}/sites/all/modules #{release_path}/sites/all/modules" | |
| end | |
| task :seed_database do | |
| seedfile = ENV['SEED_FILE'].nil? ? "config/seed.sql" : "config/#{ENV['SEED_FILE']}" | |
| put File.read(seedfile), "/tmp/#{application}_dbseed.sql" | |
| run "mysql -u #{mysql_user} -p#{mysql_password} -h localhost #{mysql_db} < /tmp/#{application}_dbseed.sql" | |
| end | |
| task :update_seed do | |
| run "mysqldump -u #{mysql_user} -p#{mysql_password} #{mysql_db} > /tmp/#{application}_dbseed_update.sql" | |
| download "/tmp/#{application}_dbseed_update.sql", "config/#{host}_seed.sql" | |
| end | |
| task :fix_permissions do | |
| run "sudo chown #{user} -R #{deploy_to}" | |
| end | |
| task :reset_permissions do | |
| run "sudo chown #{owner} -R #{deploy_to}" | |
| end | |
| task :restart do | |
| run 'sudo apachectl -k graceful' | |
| end | |
| end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment