Setting up Capistrano with LxAdmin and Lighttpd

Article Details
URL: https://support.hostingplayground.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=11
Article ID: 11
Created On: 30 May 2008 01:28 PM

Answer The following is a simple example of using Capistrano with RailsPlayground using the svn repository on yourdomain.svnrepository.com.

--We assume that the SVN repository is created using the svn control panel on domain.svnrepository.com.
-- Also make sure you have setup your rails application in LxAdmin as described here.
-- On Windows you will need SVN installed.
-- You can download it at: http://subversion.apache.org/packages.html for your OS.

1. First you will need to create the initial directory structure in your SVN repository. This can be done using svn from your local machine:

svn mkdir http://domainname.svnrepository.com/svn/application/trunk
svn mkdir http://domainname.svnrepository.com/svn/application/branches
svn mkdir http://domainname.svnrepository.com/svn/application/tags

2. Import a Rails application from your local application into the repository.

svn import local_application_path http://domainname.svnrepository.com/svn/applicationname/trunk

3. Install capistrano on your local machine

gem install capistrano
capify /full/path/to/railsapp

- This will create a deploy.rb in the /config directory of your local rails application. - The contents of the file should look like this. The application variable should be the same name you gave the application in LxAdmin.

set :user, 'root'
set :scm_username, "svnusername"
set :scm_password, "svnpassword"
set :server, 'ipofyourvps'
set :domain_name, 'domainname.com'
set :application, 'application'
set :repository, "http://yourdomain.svnrepository.com/svn/#{application}/trunk"
role :web, server
role :app, server
role :db,  server, :primary => true
set :use_sudo, false

set :deploy_to, "/home/admin/ror/#{domain_name}/#{application}-cap"

task :restart_web_server, :roles => :app do
  begin
    run "killall -9 dispatch.fcgi"
  rescue Exception => error
    puts "No dispatchers were running so there was nothing to kill"
  end
  run "/etc/init.d/lighttpd restart /dev/null 2>&1 "
end


task :after_update_code, :roles => [:web, :db, :app] do
  run "chmod 755 #{release_path}/public/dispatch.fcgi"
  run "chown admin:admin #{release_path} -R"
  run "chown admin:admin #{deploy_to}/shared -R"
  run "rm -rf /home/admin/ror/#{domain_name}/#{application}"
  run "ln -s #{release_path} /home/admin/ror/#{domain_name}/#{application}"
  run "(echo '0a'; echo \"ENV['RAILS_ENV'] ||= 'production'\"; echo '.'; echo 'wq') | ed -s #{release_path}/config/environment.rb"
end

after "deploy:start", :restart_web_server
after "deploy:restart", :restart_web_server




4. Run the following command locally to setup capistrano on the railsplayground server.

cap deploy:setup

5. Now you can deploy your app by using the following command

cap deploy

*Common Problems* - Only in the case of Fastcgi. Make sure your dispatch.cgi/dispatch.fcgi file has the correct shebang line. It should look like this:

#!/usr/local/bin/ruby

- Before deploying please make sure to edit database.yml to point to the correct database.

Feel free to contact us at support@railsplayground.com if you come across any issues with the same.