Nginx is a lightweight, high-performance web server. Passenger used with Nginx gives us many advantages. It automatically serves static assets from the public subdirectory to improve performance. Capistrano is used to automate deployment process to your remote server. Using Capistrano, you can deploy your web application on many servers simultaneously in sequence or as a rolling set.

In this article, we will see basic steps that need to be followed to configure your DigitalOcean Ubuntu Droplet.

Prerequisites:

  • Ubuntu 16.04 x64 Droplet
  • Working Rails app hosted in a remote git repository that's ready to be deployed

Initial setup for the droplet server

1. Initiate a connection:

You first need to know your server's IP address and password of the root user to login into your droplet server. Enter the following command in your terminal to connect to the droplet as a root user using ssh with your server's IP at the place of SERVER_IP_ADDRESS.

            ssh root@SERVER_IP_ADDRESS

2. Create a user

The root user has the administrative access with heightened privileges. Due to which you are advised to create another user with fewer privileges. Here, add your username at the place of demo

            adduser demo

You will be asked few question along with account password. You can fill this information or skip just by hitting 'Enter' button.

3. SSH - Key Based Authentication

If you do not have SSH key pair i.e. public and private key then you need to generate one. Run the given command on your local terminal.

ssh-keygen

You will get the output similar to following:

ssh-keygen output
Generating public/private RSA key pair.
Enter file in which to save the key (/Users/LOCALUSER_NAME/.ssh/id_rsa):

Hit 'Enter' to accept the file name and path or you can also provide a new name. It will also prompt you for the password to secure the private key, you may either enter or leave it blank. This will generate a private key, id_rsa, and a public key, id_rsa.pub, in the .ssh directory of the local user's home directory.

Then copy your public key to the remote server.

a. Run the command to print your local machine's public key on the terminal

cat ~/.ssh/id_rsa.pub

b. Copy this public key to the clipboard. Connect to the remote server as a root user and switch to the new user that you created. Create '.ssh' directory, in the home directory of the new user and restrict its permission with following commands.

su - demo
mkdir .ssh
chmod 700 .ssh

c. Now open a new file in .ssh with name authorized_keys and paste the public key in the file and save.

nano .ssh/authorized_keys

d. Restrict the permissions of the authorized_keys file.

chmod 600 .ssh/authorized_keys

Now, you should be able to connect the remote server with the new user i.e. demo by running following command on your local machine.

ssh demo@SERVER_IP_ADDRESS