Install Ruby on Rails with Apache on Debian 9

Updated , by Linode

Traducciones al Español
Estamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
Try this guide to receive $100 at signup on a new account.

What is Ruby on Rails?

Ruby on Rails is a server-side web application framework. It maintains a curated set of components and a “convention over configuration” philosophy that makes it possible to develop applications quickly and without large amounts of boilerplate. This guide will show you how to deploy Rails applications on your Linode using Phusion Passenger. Passenger allows you to embed Rails apps directly in Apache applications without needing to worry about FastCGI or complex web server proxies.

Before You Begin

  1. Familiarize yourself with our Getting Started guide and complete the steps for setting your Linode’s hostname and timezone.

  2. This guide will use sudo wherever possible. Complete the sections of our Securing Your Server to create a standard user account, harden SSH access and remove unnecessary network services.

  3. Update your system:

    sudo apt-get update && sudo apt-get upgrade

Install Apache

  1. Install Apache and its dependencies:

    sudo apt-get install apache2 apache2-doc apache2-utils
  2. Copy the default site configuration file:

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/
  3. Disable the default site:

    sudo a2dissite 000-default.conf

Install RVM and Ruby

Ruby will be installed with the Ruby Version Manager (RVM), which makes it easy to install and manage different versions of Ruby on the same system.

  1. Install the mpapis GPG key:

    gpg --keyserver hkp:// --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

    If this does not work, your system may not have dirmngr installed by default. Install it to correct the error:

    sudo apt install dirmngr
  2. Run the official RVM installation script:

    curl -sSL | bash -s stable --ruby
  3. The installation process will output a command that must be run before RVM can be used:

    source /home/username/.rvm/scripts/rvm
  4. Check the requirements for rvm:

    rvm requirements
  5. Install a version of Ruby and set it as the default version for your system:

    rvm install ruby
    rvm --default use ruby

    If your project requires a different version of ruby, install that version explicitly:

    rvm install ruby-2.5.0
    rvm --default use ruby-2.5.0

Install Passenger and Dependencies

  1. Install Passenger and other required packages:

    sudo apt-get install build-essential libapache2-mod-passenger ruby ruby-dev libruby zlib1g-dev libsqlite3-dev
  2. Rails requires a working JavaScript runtime on your system in order to run. If you do not already have one installed, use Node.js:

    sudo curl -sL | sudo -E bash -
    sudo apt install nodejs

Install Ruby on Rails

  1. Use the Rubygems package manager to install Rails:

    gem install rails --version=5.1.4
  2. Move your Rails app to your Linode, or create a new app if you don’t have one yet. Replace example-app with a descriptive name:

    rails new example-app

Configure Apache to Work with Passenger

  1. Check the path that Passenger is using to access Ruby:

    sudo passenger-config about ruby-command
    Make sure that Passenger reports the version of Ruby that you installed with RVM. Normally RVM uses paths similar to ~/.rvm/wrappers/ruby-X.X.X/ruby.
  2. Open /etc/apache2/sites-available/ in a text editor and edit it as follows. Substitute the path to your Rails app, path to your Ruby interpreter (from the previous step), hostname or IP address, and any other information as necessary.

    File: /etc/apache2/sites-available/
    <VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /home/username/example-app/public
        RailsEnv development
        PassengerRuby /path-to-ruby
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory "/home/username/example-app/public">
            Options FollowSymLinks
            Require all granted
  3. Activate the Rails site:

    sudo a2ensite
  4. Restart Apache:

    sudo systemctl restart apache2
  5. Navigate to your Linode’s public IP address in a browser. You should see the default Rails page displayed.

This page was originally published on

Your Feedback Is Important

Let us know if this guide made it easy to get the answer you needed.