Capistrano::Configuration.instance(:must_exist).load do namespace :deploy do desc "Prepares system for deployment" task :setup, :roles => :app do run "mkdir -p #{deploy_to}/system" run "cd #{deploy_to}; git clone #{repository}" create_upload_directories make_system_writable symlink vhost end task :create_upload_directories, :roles => :app do upload_directories.each do |dir| run "mkdir -p #{system_path}/#{dir}" end make_system_writable end desc "Deploys to an unitialized server" task :cold, :roles => :app do setup syncdb django #runs the deploy:django task end desc "Deploy your django app" task :django, :roles => :app do disable run "cd #{deploy_to}/#{application}; git pull" reload enable end task :make_system_writable, :roles => :app do run "chgrp -R #{apache_user} #{system_path}" run "chmod -R g+wx #{system_path}" end task :symlink, :roles => :app do media_root_symlink admin_symlink system_symlink end task :media_root_symlink, :roles => :app do run "ln -sf #{app_path}/#{media_root} #{media_root_path}" end task :system_symlink, :roles => :app do run "ln -sf #{system_path} #{media_root_path}/system" end task :admin_symlink, :roles => :app do sudo "ln -sf #{django_path}/django/contrib/admin/media #{media_root_path}/#{admin_media_root}" end desc "Creates a vhost for your application and uploads to server" task :vhost, :roles => :app do put render('django_vhost.vhost',binding), "/tmp/#{vhost_name}" sudo "mv /tmp/#{vhost_name} #{vhost_path}/#{vhost_name}" end desc "Run django syncdb" task :syncdb, :roles => :app do run "cd #{app_path} ; ./manage.py syncdb --setting=#{settings}" end desc "Destroys this app on the server" task :destroy, :roles => :app do run "rm -rf #{deploy_to}/*" sudo "rm #{vhost_path}/#{vhost_name}" reload end desc "Reloads apache" task :reload, :roles => :app do sudo "#{reload_cmd}" end desc "Enables the website" task :enable, :roles => :app do run "rm #{system_path}/maintenance.html" end desc "Disable the website" task :disable, :roles => :app do put render('maintenance.html',binding), "/tmp/maintenance.html" run "mv /tmp/maintenance.html #{system_path}/maintenance.html" end end end