Linode Library Home
Categories
Getting Started
Beginner's Guide
Using Linux
Linode Manager
Networking
LAMP Guides
LEMP Guides
Web Servers
Web Applications
Email Guides
High Availability
SSL Guides
Databases
Server Monitoring
Development
Version Control
Project Management
Web Frameworks
Java
Perl
Python
Ruby
Ruby on Rails
ASP.NET/Mono
PHP
Smalltalk
Change Management
Communications
Advanced
Troubleshooting
How to Contribute
Sitemap
Linode Library RSS Feed
Linode Library Home :: Development :: Web Application Frameworks :: Ruby Frameworks :: Ruby on Rails Guides :: Ruby on Rails with Nginx on Ubuntu 8.04 LTS (Hardy)
Print View Download PDF Download RST
Notice: This document is an older, unmaintained guide. There may be a new guide available for this software.

Ruby on Rails with Nginx on Ubuntu 8.04 LTS (Hardy)

Author: Phil ParadisExternal Link
Published: August 21, 2009
Revised: July 9, 2010

Ruby on Rails is a popular rapid development web framework that allows web designers and developers to quickly implement dynamic, fully featured web applications written in the Ruby programming language.

This guide will help you get Ruby on Rails working with Passenger and the Nginx web server on Ubuntu 8.04 LTS (Hardy). We assume you've followed the steps in our getting started guide and that your system is up to date. All steps should be performed as root via an SSH session to your Linode VPS.

These instructions work with the Linode platform. If you don't have a Linode yet, sign up for a Linux VPS and get started today.

Install Required Packages Link

First, make sure you have the universe repository enabled in your /etc/apt/sources.list file. Your file should resemble the following:

File excerpt: /etc/apt/sources.list

## main & restricted repositories
deb http://us.archive.ubuntu.com/ubuntu/ hardy main restricted universe
deb-src http://us.archive.ubuntu.com/ubuntu/ hardy main restricted universe

deb http://security.ubuntu.com/ubuntu hardy-security main restricted universe
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted universe

If you added universe to the the items in your list, you'll need to update your repository database:

apt-get update
apt-get upgrade

Issue the following command to install packages required for Ruby on Rails.

apt-get install wget build-essential ruby1.8 ruby1.8-dev irb1.8 rdoc1.8 zlib1g-dev libopenssl-ruby1.8 libopenssl-ruby libzlib-ruby libssl-dev

Create symbolic links to the installed version of Ruby:

ln -s /usr/bin/ruby1.8 /usr/bin/ruby
ln -s /usr/bin/irb1.8 /usr/bin/irb

Now we'll need to install gems. The version in the Ubuntu 8.04 repositories is quite outdated, and does not work correctly. Issue the following commands to download and install a fresh version. You may wish to check the RubyForge files pageExternal Link for the most recent version.

wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
tar -xvf rubygems-1.3.6.tgz
cd rubygems-1.3.6
ruby setup.rb
ln -s /usr/bin/gem1.8 /usr/bin/gem

Update rubygems:

gem update --system

Install the rake, rack, and fastthread gems:

gem install rake
gem install rack
gem install fastthread --no-rdoc --no-ri

Install Passenger and Nginx Link

Proceed to the Phusion PassengerExternal Link site and locate the link for the current source code tarball. Download it as follows (substitute the link for the current version):

cd /root
wget http://rubyforge.org/frs/download.php/69546/passenger-2.2.11.tar.gz
cd /opt
tar xzvf ~/passenger-2.2.11.tar.gz

Run the Phusion Passenger installer for Nginx:

cd passenger-2.2.11/bin
./passenger-install-nginx-module

You'll be greeted by the Phusion Passenger Nginx installer program. Press "Enter" to continue with the installation.

Phusion Passenger Nginx installer program running on Ubuntu 8.04 LTS (Hardy).

When prompted for the Nginx installation method, we recommend you choose "1" to allow the installer to automatically download, compile, and install Nginx for you. Unless you have specific needs that would necessitate passing custom options to Nginx at compile time, this is the safest way to proceed.

Please do not remove the Passenger files from opt after the install. They need to stay in place or your install will not function correctly.

Set up an Init Script for Nginx Link

Nginx is now installed in /opt/nginx, but we need a way of controlling it. Create a file called /etc/init.d/nginx and copy the following script contents into it:

File: /etc/init.d/nginx

#! /bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

PATH=/opt/nginx/sbin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/nginx/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi

set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid \
                --exec $DAEMON
        echo "$NAME."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /opt/nginx/logs/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
          echo -n "Reloading $DESC configuration: "
          start-stop-daemon --stop --signal HUP --quiet --pidfile     /opt/nginx/logs/$NAME.pid \
              --exec $DAEMON
          echo "$NAME."
          ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
            exit 1
            ;;
    esac

    exit 0

Run the following commands to set system startup links:

chmod +x /etc/init.d/nginx
/usr/sbin/update-rc.d -f nginx defaults

You can now start, stop, and restart Nginx just like any other server daemon. For example, to start the server, issue the following command:

/etc/init.d/nginx start

The configuration file for Nginx is located at /opt/nginx/conf/nginx.conf. This is the file you'll need to edit to add support for your Rails applications. A default server is already configured in this file, and it also contains examples for alternate virtual host and SSL configurations.

Install MySQL Support (optional) Link

If your application uses MySQL, install the database server by following our MySQL on Ubuntu 8.04 LTS (Hardy) guide. Once it's installed and configured properly, issue the following commands:

apt-get install libmysqlclient15-dev libmysql-ruby

gem install mysql --no-rdoc --no-ri -- --with-mysql-dir=/usr/bin \
    --with-mysql-lib=/usr/lib/mysql --with-mysql-include=/usr/include/mysql

More Information Link

You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

License Link

This guide is licensed under a Creative Commons Attribution-No Derivative Works 3.0 United States LicenseExternal Link. Please feel free to redistribute unmodified copies of it as long as attribution is provided, preferably via a link to this page.

Got a comment?

BBCode formatting is allowed. Email addresses are confidential, and are only used for gravatars and sending document/comment updates if requested. Please refer to our privacy policy. All comments are moderated and may take some time to appear on this page.