Digital Ocean has a great tutorial on how to install Nginx with Phusion Passenger, RVM, and RoR on Ubuntu.

Digital Ocean has a great tutorial on how to install Nginx with Phusion Passenger, RVM, and RoR on Ubuntu.

We recently had to do exactly that and created an updated guide.

Update Ubuntu packages:

  • sudo apt-get update

If this is a clean install it can also be a good idea to install all the security updates:

  • sudo apt-get upgrade
  • sudo apt-get autoclean

A tip: if we plan to use mysql2 gem libmysqlclient-dev is a requirement:

  • sudo apt-get install libmysqlclient-dev

Install and start RVM (we might need to download and install GPG signature, gpg —keyserver hkp://keys.gnupg.net —recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3):

  • curl -L get.rvm.io | bash -s stable
  • source ~/.rvm/scripts/rvm

Check to see if any required libraries are missing:

  • rvm requirements

If anything is missing install it with rvmsudo and run rvm requirements to make sure all is good.

Install ruby 2.2.1 and start using it:

  • rvm install 2.2.1
  • rvm use 2.2.1 —default

Install rails and passenger gems.

  • gem install rails
  • gem install passenger

Passenger install scripts will let us know if anything is missing and will install Nginx and all the required components:

  • rvmsudo passenger-install-nginx-module
  • sudo apt-get install nodejs

To be able to use nginx as a service:

  • sudo service nginx start

We first need to install startup scripts:

Now we can point the configuration file (assuming the default location) to point to our rails project on the file-system.

  • sudo nano /opt/nginx/conf/nginx.conf

server { listen 80; server_name example.com; passenger_enabled on; root /var/www/my_app/current/public; }

Welcome to The infinite monkey theorem

Somewhere a monkey just typed Shakespeare in TypeScript. Be the first to read the masterpieces (and the hilarious misfires) landing on the blog.

Subscribe to The infinite monkey theorem

We fling fresh posts—no banana peels attached—straight to your inbox.