An insight into the configuration of Capistrano #1

Prior to starting this article, you should have already configured most of Ruby on Rails with Capistrano. At this point, we need to check the configuration file for Capistrano and add up the required things.

Quick details

In this article, we will be explaining what each configuration setting is and what it is meant for. Although the article is long, every step is explained in details, so that you can carry out all the configurations successfully.

Deploy.rb

First of all, we will move to the Ruby on Rails app folder located on the local workstation.

Setting up the variables for ‘application’, ‘username’ and ‘repository’

Working systematically, we will start at the top and work our way down to the end of the file. The first variable in the file is ‘application’. You can use any app name but it’s better to use the name of your domain. This will keep it in accordance with the protocols we used for vhost etc.

Write in the following line for the app name

set :application, "domain.com"

Now we are going to setup the username. This will forestall any permissions issues that could occur from using the local workstation username instead of droplet username.

Add this line

set :user, "username"

For repository, we enter the details we used to checkout our project ‘MyTestProject1’

set :repository, "svn+MyTestProject1ssh://12.34.56.789/home/username/repository/MyTestProject1"

Setting up SSH port

The SSH port is not setup by default. Capistrano uses the default ssh port, 22, for connecting to the droplet via SSH. Therefore, we need to let Capistrano know that we defined our SSH port as ‘22’ while setting up the droplet.

The following line defines the SSH port.

set :port, 22

Setting up the deployment path

Next, we will set up the deployment path. While setting up droplet and vhosts, we used ‘public_html’ folder.

The deployment path should be written as follows:

set :deploy_to, "/home/username/public_html/#{application}"

Note that the variable ‘application’ is used at the end. If we change ‘set :application’ from domain.com to something else then this setting will also reflect that change.

Setting the variables for ‘app’, ‘web’ and ‘db’

App, web and db are the last three settings that need to be set up at this stage. Many users point these three variables to the same place; which may make things a bit confusing. However, it is also possible to have your app, web and db pointing to different locations. In such a case, this setting will let Capistrano know the location of each variable.

We can define a new variable ‘location’. The three settings will point to the URL assigned to this variable.

Final deploy.rb file

set :application, "domain.com"
set : user, "username"
set :repository, "svn+MyTestProject1ssh://12.34.56.789/home/username/repository/MyTestProject1"
# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"
set :port, 30000
set :deploy_to, "/home/username/public_html/#{application}"
# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion
role :app, application
role :web, application
role :db, application , :primary => true

Although the file’s contents seem simple, they will be helpful when it comes time to enter our very first Capistrano command...

Public_html

Now, we will log in to the droplet and move to the public_html folder.

ssh -p 22 username@123.45.67.890
cd /home/username/public_html

If you don’t have a working droplet, then the droplet will be empty. Since the directory is empty, there will not be any output.

ls

Now we will enter our first Capistrano command.

Running the command deploy:setup

Enter this command on the local workstation

cap deploy:setup

It may seem like a simple phrase but a lot will happen. To see what has happened, we will look into the public_html folder on our droplet.

ls
...
domain.com

Directory Structure

Capistrano has worked wonders. See the power and ease of using Capistrano.
It logged in to the droplet, fetched the settings from deploy.rb and created the directory structure that we will be using for our future development. Within the parent folder, you can see two more folders named ‘releases’ and ‘shared’. The ‘shared’ folder contains subfolders for system info, logs and pids etc.