7/12/2014 Deploy on Ubuntu 14.04 Trusty Tahr - GoRails

Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr A guide to setting up a Ruby on Rails production environment

Ubuntu 14.04 (/deploy/ubuntu/14.04) Ubuntu 12.04 (/deploy/ubuntu/12.04)

Overview

 This will take about 45 minutes.

We will be setting up a Ruby on Rails production environment on Ubuntu 14.04 LTS Trusty Tahr.

Since we setup Ubuntu for our development environment, we also want to use it in production. This keeps your application running consistently between development and production. We're using an LTS version of Ubuntu in production because it is supported for several years where a normal version of Ubuntu isn't.

Using Ubuntu LTS in production allows you to continue receiving security updates which is important for your production server(s).

We're going to be setting up a Droplet on Digital Ocean (https://www.digitalocean.com/?refcode=87fcb9dab7a3) for our server. It costs $5/mo and is a great place to host your applications. Creating A Virtual Private Server

You can use any cloud server hosting company you choose for your Rails application. I've had excellent experience with Digital Ocean (https://www.digitalocean.com/? refcode=87fcb9dab7a3) and Linode (https://www.linode.com/? r=a02b271802c33ff2f38b3d5335089d76648ca6c2) with the servers I have used. If you're looking for alternatives outside the US or otherwise, just google "VPS hosting". A VPS is a virtual private server. It's just like a server you setup at home, only virtualize and running with a suite of other servers in a datacenter.

https://gorails.com/deploy/ubuntu/14.04 1/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails Since we're using Digital Ocean (https://www.digitalocean.com/? refcode=87fcb9dab7a3) for our cloud server, the first thing we're going to do is configure a new one. I'm going with the Droplet with 1GB of RAM. You can setup whichever size server you prefer, keep in mind that if you choose a 512MB server you may run into some slowness with a low amount of RAM.

(http://cl.ly/RGNu/Screen%20Shot%202013-09-08%20at%206.00.59%20PM.png)

The next step is to choose your location. Choose one close to you so that you can have better connection speeds.

(http://cl.ly/RFcK/Screen%20Shot%202013-09-08%20at%206.02.14%20PM.png)

Last, but not least we need to choose which OS to use. We're going to be using Ubuntu 14.04 LTS x64. Your application may require a different OS or version, but if you're not sure this is generally what you should use.

https://gorails.com/deploy/ubuntu/14.04 2/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

(http://cl.ly/VRNn/Screen%20Shot%202014-05-08%20at%205.54.39%20PM.png)

Once Digital Ocean has configured your server, check your email to get your password for the new cloud server.

(http://cl.ly/RGaf/Screen%20Shot%202013-09-08%20at%206.43.18%20PM.png)

You should follow the instructions in the email to login via SSH for the very first time and verify it is working.

The first thing we will do on our new server is create the user account we'll be using to run our applications and work from there.

sudo adduser deploy sudo adduser deploy sudo su deploy

https://gorails.com/deploy/ubuntu/14.04 3/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails Before we move forward is that we're going to setup SSH to authenticate via keys instead of having to use a password to login. It's more secure and will save you time in the long run.

We're going to use ssh-copy-id to do this. If you're on OSX you may need to run brew install ssh-copy-id but if you're following this tutorial on desktop, you should already have it.

Once you've got ssh-copy-id installed, run the following and replace IPADDRESS with the one for your server:

Make sure you run ssh-copy-id on your computer, and NOT the server.

ssh-copy-id deploy@IPADDRESS

Now when you run ssh deploy@IPADDRESS you will be logged in automatically. Go ahead and SSH again and verify that it doesn't ask for your password before moving onto the next step.

For the rest of this tutorial, make sure you are logged in as the deploy user on the server!

Installing Ruby

Choose the version of Ruby you want to install:

2.1.2 (Recommended)

The first step is to install some dependencies for Ruby.

sudo apt-get update sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadl ine-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-open ssl-dev python-software-properties

Next we're going to be installing Ruby using one of three methods. Each have their own benefits, most people prefer using rbenv these days, but if you're familiar with rvm you can follow those steps as well. I've included instructions for installing from source as well, but in general, you'll want to choose either rbenv or rvm.

Choose one method. Some of these conflict with each other, so choose the one that https://gorails.com/deploy/ubuntu/14.04 4/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails sounds the most interesting to you, or go with my suggestion, rbenv.

Using rbenv Using rvm From source

Installing with rbenv is a simple two step process. First you install rbenv , and then ruby-build :

cd git clone git://.com/sstephenson/rbenv.git .rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL

rbenv install 2.1.2 rbenv global 2.1.2 ruby -v

The last step is to tell Rubygems not to install the documentation for each package locally

echo "gem: --no-ri --no-" > ~/.gemrc Installing

Phusion is the company that develops Passenger and they recently put out an official Ubuntu package that ships with Nginx and Passenger pre-installed.

We'll be using that to setup our production server because it's very easy to setup.

https://gorails.com/deploy/ubuntu/14.04 5/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

# Install Phusion's PGP key to verify packages gpg --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7 gpg --armor --export 561F9B9CAC40B2F7 | sudo apt-key add -

# Add HTTPS support to APT sudo apt-get install apt-transport-https

# Add the passenger repository sudo sh -c "echo 'deb https://oss-binaries.phusionpassenger.com/apt/passenger tru sty main' >> /etc/apt/sources.list.d/passenger.list" sudo chown root: /etc/apt/sources.list.d/passenger.list sudo chmod 600 /etc/apt/sources.list.d/passenger.list sudo apt-get update

# Install nginx and passenger sudo apt-get install nginx-full passenger

So now we have Nginx and passenger installed. We can manage the Nginx webserver by using the service command:

sudo service nginx start

Open up the server's IP address in your browser to make sure that nginx is up and running.

The service command also provides some other methods such as restart and stop that allow you to easily restart and stop your webserver.

Next, we need to update the Nginx configuration to point Passenger to the version of Ruby that we're using. You'll want to open up /etc/nginx/nginx.conf in your favorite editor, find the following lines, and uncomment them:

## # ## # Uncomment it if you installed ruby-passenger or ruby-passenger-enterprise ##

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;

passenger_ruby /usr/bin/ruby; # passenger_ruby /home/deploy/.rvm/wrappers/ruby-2.1.2/ruby; # If use use rvm, be sure to change the version number # passenger_ruby /home/deploy/.rbenv/shims/ruby; # If you use rbenv

The passenger_ruby is the important line here. We want this to match the output of which ruby in terminal. This is probably correct already if you installed Ruby from source. If you used rbenv, it would look something like this /home/deploy/.rbenv/shims/ruby . https://gorails.com/deploy/ubuntu/14.04 6/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails Once you've changed passenger_ruby to use the right version Ruby, you can run sudo service nginx restart to restart Nginx with the new Passenger configuration.

Now that we've restarted Nginx, the Rails application will be served up using the deploy user just how we want. In the section we will talk about configuring Nginx to serve up your Rails application. MySQL and PostgreSQL Database Setup

Setting up your production database is pretty easy. Make sure to keep in mind that you should use a different password for your production databases.

Depending on what database you want to use, follow the steps related to the database:

Installing MySQL

All you need to do in order to install MySQL is to run the following command:

sudo apt-get install mysql-server mysql-client libmysqlclient-dev

You can use the root user and password set during installation for your database or you can add a new user (https://www.digitalocean.com/community/articles/how-to- create-a-new-user-and-grant-permissions-in-mysql) to MySQL.

Installing PostgreSQL

Postgres 9.3 is available in the Ubuntu repositories and we can install it like so:

sudo apt-get install postgresql postgresql-contrib libpq-dev

Next we need to setup our postgres user:

sudo su - postgres createuser --pwprompt exit

The password you type in here will be the one to put in your my_app/current/config/database.yml later when you deploy your app for the first time.

https://gorails.com/deploy/ubuntu/14.04 7/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails Capistrano Setup

The fancy new verison of Capistrano 3.0 just shipped and we're going to be using it to deploy this application.

The first step is to add Capistrano to your Gemfile :

gem 'capistrano', '~> 3.1.0' gem 'capistrano-bundler', '~> 1.1.2' gem 'capistrano-rails', '~> 1.1.1'

# Add this if you're using rbenv # gem 'capistrano-rbenv', github: "capistrano/rbenv"

# Add this if you're using rvm # gem 'capistrano-rvm', github: "capistrano/rvm"

Once these are added, run bundle --binstubs and then cap install STAGES=production to generate your capistrano configuration.

Next we need to make some additions to our Capfile to include bundler, rails, and rbenv/rvm (if you're using them). Edit your Capfile and add these lines:

require 'capistrano/bundler' require 'capistrano/rails'

# If you are using rbenv add these lines: # require 'capistrano/rbenv' # set :rbenv_type, :user # or :system, depends on your rbenv setup # set :rbenv_ruby, '2.0.0-p451'

# If you are using rvm add these lines: # require 'capistrano/rvm' # set :rvm_type, :user # set :rvm_ruby_version, '2.0.0-p451'

After we've got Capistrano installed, we can configure the config/deploy.rb to setup our general configuration for our app. Edit that file and make it like the following replacing "myapp" with the name of your application and git repository:

https://gorails.com/deploy/ubuntu/14.04 8/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

set :application, 'myapp' set :repo_url, '[email protected]:excid3/myapp.git'

set :deploy_to, '/home/deploy/myapp'

set :linked_files, %w{config/database.yml} set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/ system}

namespace :deploy do

desc 'Restart application' task :restart do on roles(:app), in: :sequence, wait: 5 do execute :touch, release_path.join('tmp/restart.txt') end end

after :publishing, 'deploy:restart' after :finishing, 'deploy:cleanup' end

Now we need to open up our config/deploy/production.rb file to set the server IP address that we want to deploy to:

set :stage, :production

# Replace 127.0.0.1 with your server's IP address! server '127.0.0.1', user: 'deploy', roles: %w{web app}

If you have any trouble with Capistrano or the extensions for it, check out Capistrano's Github page (https://github.com/capistrano/). Final Steps

Thankfully there aren't a whole lot of things to do left!

Adding The Nginx Host

In order to get Nginx to respond with the Rails app, we need to modify it's sites- enabled.

Open up /etc/nginx/sites-enabled/default in your text editor and we will replace the file's contents with the following:

https://gorails.com/deploy/ubuntu/14.04 9/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on;

server_name mydomain.com; passenger_enabled on; rails_env production; root /home/deploy/myapp/current/public;

# redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

This is our Nginx configuration for a server listening on port 80. You need to change the server_name values to match the domain you want to use and in root replace "myapp" with the name of your application.

Connecting The Database

You can run cap production deploy to deploy your application.

The file config/database.yml needs to be updated for the production database server username, password, and host. You can set host to "localhost" and you will have to create a database on the server with the same name. Capistrano won't create it for you because it's something that should really only happen once. After deploying you can set create it by SSHing in and running RAILS_ENV=production bundle exec db:create in your app's /home/deploy/myapp/current directory (just change "myapp" to match the name of your app).

Something you should consider is only storing the database credentials on the server and having Capistrano symlink the database.yml file so that it doesn't have to be stored in git. This is especially important when you have a public git repository and don't want to publish your database credentials.

Restarting The Site

One last thing you should know is that restarting just the Rails application with Passenger is very easy. If you ssh into the server, you can run touch myapp/current/tmp/restart.txt and Passenger will restart the application for you. It monitors the file's timestamp to determine if it should restart the app. This is helpful when you want to restart the app manually without deploying it.

https://gorails.com/deploy/ubuntu/14.04 10/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails Conclusion

And there you have it, a very long-winded explanation of all the different things you need to do while setting up an application to be deployed. There is a lot of system administration pieces that can expand upon this, but that's for another time. Please let me know if you have any questions, comments, or suggestions!

Tweet 9 Share 7 0 Share 10

We're sharing everything we know about how to write great quality code

Join the GoRails mailing list to learn more about what great code looks like, why it is great, and how you can write great code yourself that you will enjoy working with.

First Name

Last Name

Email Address

Send Me Lessons On Rails

99 Comments GoRails Login

Sort by Best Share Favorite

Join the discussion…

Daniel Baldwin • 24 days ago Hi, thanks for the tut, it seems like a very concise and informative resource. https://gorails.com/deploy/ubuntu/14.04 11/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails I seem to have hit an issue though, when running:

cap production deploy

I get an error:

ERROR linked file /home/deploy/my_actual_app_name/shared/config/database.yml does not exist on my.server.ip.address cap aborted! SSHKit::Runner::ExecuteError: Exception while executing on host my.server.ip.address: exit

The backtrace is pretty unhelpful but the tasks: TOP suggests the issue is originating (as expected) from config/deploy.rb

Tasks: TOP => deploy:check:linked_files

see more

2 • Reply • Share ›

Chris Oliver Mod Daniel Baldwin • 24 days ago Hey Daniel,

You'll need to manually create a database.yml file on your server. It's trying to link it but it hasn't been created yet. So you can ssh in and edit that file

nano /home/deploy/my_actual_app_name/shared/config/database.yml

and put in your database config for the server database that you just setup. 1 • Reply • Share ›

andre bautista Chris Oliver • 13 days ago Hi Chris,

I followed these steps in creating a database.yml file in the listed directory and I'm getting the error

"rm stdout: Nothing written rm stderr: rm: cannot remove ‘/home/deploy/gymsight/releases/20140630064741/config/database.yml’: No such file or directory"

Any ideas on how to get past this? • Reply • Share ›

andre bautista andre bautista • 11 days ago The repo helped me work through most of the problems. https://gorails.com/deploy/ubuntu/14.04 12/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails The repo helped me work through most of the problems. Just need to clarify one thing now. In the database.yml file the username should be "postgres" and the password is the password we entered when we created "postgres"? I'm able to sign into the user fine if I "su postgres" but when I use those credentials in the database.yml file to create a DB, after signing back into deploy, I get the error FATAL: password authentication failed for user "postgres". 1 • Reply • Share ›

Chris Oliver Mod andre bautista • 11 days ago I guess, just double check that you've got it in the right format then. Can't think of anything else that would be wrong. You're pretty close now! • Reply • Share ›

andre bautista Chris Oliver • 11 days ago sigh...Heroku won this battle • Reply • Share ›

Chris Oliver Mod andre bautista • 11 days ago Dang! :⧵ To be fair, Heroku's simplicity is pretty darn impressive and I don't blame you.

If you ever do need to get your site running on a VPS, shoot me an email and we can do a short one-on-one gig and I can probably get you squared away. • Reply • Share ›

Chris Oliver Mod andre bautista • 12 days ago Hmm, that's odd. It shouldn't be trying to remove the file. Can you send over some more of your logs in a github gist? • Reply • Share ›

andre bautista Chris Oliver • 12 days ago https://gist.github.com/andreb...

So the error has changed magically, but it appears as though it's trying to access all the branches of my repo even though I'm specifying "set :branch, 'master'" in the deploy file. • Reply • Share ›

Chris Oliver Mod andre bautista • 12 days ago That's okay because it is just cloning the repository. It looks like the symlink is crashing possibly because https://gorails.com/deploy/ubuntu/14.04 13/25 7/12/2014 Delpolooy kRusb yl iOkne R tahilse o ns Uybmuntlui n14k.0 4is T rcusrtya Tsahhrin - gGo pRaoils sibly because /home/deploy/gymsight/shared/config/database.yml doesn't exist. Have you double checked that file exists? • Reply • Share ›

andre bautista Chris Oliver • 12 days ago Just checked, file is there. I also edited the gist to show my latest error message. • Reply • Share ›

Chris Oliver Mod andre bautista • 12 days ago Looks like you've already got a database.yml in your repo. Either remove the symlink on deploy and add your credentials to that file, or remove the file from git so that it can symlink on deploy. • Reply • Share ›

andre bautista Chris Oliver • 12 days ago I don't have a database.yml in the remote repo. (https://github.com/andrebautis... ) Here's my deploy.rb file, I think the error might be in the deploy itself, I'm still trying to decipher what all these things mean. https://gist.github.com/andreb... • Reply • Share ›

Chris Oliver Mod andre bautista • 12 days ago Interesting, that all looks correct to me. • Reply • Share ›

andre bautista Chris Oliver • 12 days ago Do you have a public repository with this kind of set up? It could also be my production.rb file causing issues. https://gist.github.com/andreb... • Reply • Share ›

Chris Oliver Mod andre bautista • 11 days ago Here's an example: https://github.com/excid3/anim... • Reply • Share ›

Daniel Baldwin Chris Oliver • 23 days ago Thanks Chris.

That makes sense now. I assume that there are ways to automate this part of the process but I guess it's also an idea to do it manually for the extra layer of control it grants.

I also hit a few other issues after this (and so have yet to actually https://gorails.com/deploy/ubuntu/14.04 14/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails deploy) but seem to be making steady progress now.

Thanks again. • Reply • Share ›

Chris Oliver Mod Daniel Baldwin • 23 days ago Sometimes people keep database.yml in their repository but then your production password is saved in your code repo so a lot of people choose not to do it that way.

Let me know if I can help out with any of the other issues! • Reply • Share ›

Daniel Baldwin Chris Oliver • 19 days ago Thanks again, I managed to get through it soon enough after this issue.

My business partner actually decided to use Figaro for exactly that purpose. It means that we can keep the database.yml file in version control whilst keeping the particulars locally secured.

The snippet here:

https://gist.github.com/patte/...

helped somewhat with getting the application.yml file onto the server but I found that because we were using Devise I had to change the line:

after "deploy:symlink:release", "figaro:symlink" to before "deploy:compile_assets", "figaro:symlink"

see more

• Reply • Share ›

Chris Oliver Mod Daniel Baldwin • 19 days ago Awesome stuff. Thanks for sharing Daniel. • Reply • Share ›

Mark Sugan • 16 hours ago Hi, thanks for this tutorial, I tried to follow every step, I deployed the app with some fails http://pastebin.com/zgkQXcqE

the vps still showing the nginx welcome message, I can't figure out why! • Reply • Share › https://gorails.com/deploy/ubuntu/14.04 15/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

Chris Oliver Mod Mark Sugan • 6 hours ago Your deploy was successful. The failures are supposed to happen.

Make sure you point nginx to /home/deploy/sample_app/current/ and restart it. • Reply • Share ›

Mark Sugan Chris Oliver • 6 hours ago Just checked, default file in /etc/nginx/sites-enabled/ is filled with correct values, it's weird

root /home/deploy/sample_app/current/public; • Reply • Share ›

Chris Oliver Mod Mark Sugan • 5 hours ago You can check the nginx log then for errors and you should find something there. Could be syntax errors for example. 1 • Reply • Share ›

Mark Sugan Chris Oliver • 5 hours ago There was no error in syntaxe, but it woked after commenting those lignes:

# listen 80 default_server; # listen [::]:80 default_server ipv6only=on; • Reply • Share ›

Felipe Campos Clarke • 2 days ago this was very useful for me. Thank you very much for the article! • Reply • Share ›

Deb Lora • 15 days ago Hey, thanks a lot for this tutorial. This is one of the most comprehensive one that I've come across thus far!

I am running into some trouble however. For some reason, the app that is actually up and running on my server is an older version (from like two months ago) of my application, but the "current" version of the app is my desired up-to- date one. (I see this when I review the code in that directory.)

I've specified that the master branch should be deployed, restarted the web and app servers, precompiled assets. But, I still have this older version running. (I am having the same problem this person had http://stackoverflow.com/quest...

Does anyone have any ideas as to why this may be the case? • Reply • Share › https://gorails.com/deploy/ubuntu/14.04 16/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

Chris Oliver Mod Deb Lora • 15 days ago One thing is to check and make sure your config points to the right directory. It definitely has happened to me before, but it is almost always a case of either reading the wrong config or the config pointing to the wrong folder. • Reply • Share ›

Deb Lora Chris Oliver • 14 days ago Thank you! I double checked the config.

It turned out that the problem was not cap but my own code.

For anyone reading this if your site looks like an older version of your site, it might just be that your assets are not loading properly.

It turns out that my custom stylesheet was not actually loading, and there was an error in the precompilation of assets because of this.

One way to check for that is by (if you're using chrome) go to a page on your app, open the inspect tool (ctrl + i), go to the network tab, refresh your page. Look for any red links (stylesheets or assets that are not loading). This is a problem with your code not capistrano. The code for loading specific stylesheets was working on my local machine, but it didn't work in production. So double check that. :] 1 • Reply • Share ›

Chris Oliver Mod Deb Lora • 14 days ago Oh! That's an interesting one. It has happened to me before but that definitely is an obscure one. I'm glad you got it figured out! • Reply • Share ›

Chris Sciolla • 15 days ago Hi Chris, I've followed this tutorial exactly and I'm getting the following error and can't figure out why. I also have no idea why example.com is there...

cap production deploy:check

[68f3b617] Running /usr/bin/env [ ! -d ~/.rbenv/versions/2.0.0-p481 ] on ***.***.***.*** [68f3b617] Command: [ ! -d ~/.rbenv/versions/2.0.0-p481 ] [d8d5b994] Running /usr/bin/env [ ! -d ~/.rbenv/versions/2.0.0-p481 ] on example.com [d8d5b994] Command: [ ! -d ~/.rbenv/versions/2.0.0-p481 ] [68f3b617] Finished in 1.144 seconds with exit status 1 (failed). https://gorails.com/deploy/ubuntu/14.04 17/25 7/12/2014 [68f3b617] Finished iDne p1lo.y1 R4u4by sOen cRaoilns odn sU bwunittuh 1 4e.0x4 iTtr usstya Ttauhrs - 1Go (Rfailisled).

cap aborted!

SSHKit::Runner::ExecuteError: Exception while executing on host example.com: No route to host - connect(2)

Errno::EHOSTUNREACH: No route to host - connect(2)

Tasks: TOP => rbenv:validate

Any ideas? Thanks for taking the time to write this up. • Reply • Share ›

Chris Oliver Mod Chris Sciolla • 15 days ago Check your config/deploy/production.rb file to make sure it doesn't have example.com in it. I would guess that's where it is coming from. Swap that with your domain or IP and you should be good. • Reply • Share ›

Chris Sciolla Chris Oliver • 15 days ago That's the weird thing. I only have the correct IP address in there. do I need to run any commands if I change production.rb? re- commit to github on restart the production server? • Reply • Share ›

Chris Oliver Mod Chris Sciolla • 15 days ago Make sure the file is saved, but that's all you should need to do. You can try doing a project wide search in your text editor to find "example.com". That should point you to it. • Reply • Share ›

Chris Sciolla Chris Oliver • 15 days ago ughhhhh. can't believe I missed that in production.rb in the roles. sorry for the stupid question... • Reply • Share ›

Chris Oliver Mod Chris Sciolla • 15 days ago I've had times where I went through everything and I couldn't find it so I ended up deleting all the files and starting from scratch so I know the feeling well. ;-) • Reply • Share ›

Chris Sciolla Chris Oliver • 15 days ago I got the dreaded, We're sorry , but something went wrong and have no idea where to start looking. I got a bunch of fails during the cap build, many similar to:

Command: [ -L https://gorails.com/deploy/ubuntu/14.04 /home/deploy/*****/releases/20140627215511/tmp/ 18/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails /home/deploy/*****/releases/20140627215511/tmp/ Finished in 0.051 seconds with exit status 1 (failed). • Reply • Share ›

Chris Oliver Mod Chris Sciolla • 15 days ago Sometimes having failed commands is good. It occasionally checks to see if it needs to create a directory like this one so it fails because it already exists which is totally okay. • Reply • Share ›

Jakub Kuchar • 17 days ago Soon i would like to write a deployment guide for opensource project https://github.com/sharetribe/... from non-server guy perspective. And this guide playing a big role, i hope you wouldn't mind that i will reference it via link? • Reply • Share ›

Chris Oliver Mod Jakub Kuchar • 16 days ago I don't mind at all Jakub. Let me know if there's anything I can help with. • Reply • Share ›

Nick DelRossi • 19 days ago Thanks for the tutorial.

I want to add a helpful tip incase anyone else's Rails app has SSL enabled and is not working.

If you have enabled SSL/https on your Rails app, you will need to add another step to this process. I went through this tutorial and was getting ERR_CONNECTION_REFUSED in chrome when I tried to get to my site. I am new to this and it took me hours before I realized what the problem was.

If you follow the steps in this article it should fix the issue. https://www.digitalocean.com/c... • Reply • Share ›

Chris Oliver Mod Nick DelRossi • 19 days ago Thanks for sharing Nick! • Reply • Share ›

Bhuwan Arora • 22 days ago I have managed to go through and run the complete tutorial, but after running touch APP-NAME/current/tmp/restart.txt I only see an nginx welcome page on the server IP. How can I debug the problem.

These are my config files config/deploy.rb http://pastebin.com/1SXMDYvS config/deploy/production.rb http://pastebin.com/ZYGejqJF https://gorails.com/deploy/ubuntu/14.04 19/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails /etc/nginx/sites-enabled/default http://pastebin.com/0JNG54KH

I also tried with SERVER-IP instead of WEB-ADDRESS in server-name in /etc/nginx/sites-enabled/default

Where am I go wrong • Reply • Share ›

Bhuwan Arora Bhuwan Arora • 22 days ago Ahh I found out I had created a backup for nginx.conf with the name nginx.conf.backup and that was creating all the problem.. • Reply • Share ›

Prasad Saxena • 23 days ago Hello Chris,

Here is the error I see when I try to run the command bundle --binstubs

deploy@sparktransfer:~/AsachTimepass$ bundle --binstubs

/home/deploy/.rbenv/versions/2.1.2/lib/ruby/2.1.0//core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler (LoadError)

from /home/deploy/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'

from /usr/bin/bundle:7:in `

'

I am using passenger_ruby /home/deploy/.rbenv/shims/ruby;

in the nginx.conf file, but it still doesnt work.

Can you help me ? • Reply • Share ›

Guest • 23 days ago Where is the Gem File ? Please give me the exact location of the Gemfile. "like /home/rails or /etc/nginx etc." To add the lines :

gem 'capistrano', '~> 3.1.0' gem 'capistrano-bundler', '~> 1.1.2' gem 'capistrano-rails', '~> 1.1.1'

# Add this if you're using rbenv # gem 'capistrano-rbenv', github: "capistrano/rbenv" • Reply • Share ›

Chris Oliver Mod Guest • 22 days ago https://gorails.com/deploy/ubuntu/14.04 20/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails The Gemfile is in the top folder in your Rails application. • Reply • Share ›

Benjamin S • 25 days ago Awesome tut, thank you very much.

I managed to deploy but I have an error "We're sorry, but something went wrong."

when i type sudo less /var/log/nginx/error.log i get the following.

[ 2014-06-17 04:55:18.8418 903/7f6b1e392700 agents/HelperAgent/RequestHandler.h:2262 ]: [Client 20] Cannot checkout session.

Error page:

Your Ruby version is 1.9.3, but your Gemfile specified 2.1.2 (Bundler::RubyVersionMismatch) /home/deploy/.rvm/gems/ruby-2.1.2/gems/bundler- 1.6.3/lib/bundler/definition.rb:390:in `validate_ruby!' /home/deploy/.rvm/gems/ruby-2.1.2/gems/bundler-1.6.3/lib/bundler.rb:116:in `setup' /home/deploy/.rvm/gems/ruby-2.1.2/gems/bundler- see more

• Reply • Share ›

Chris Oliver Mod Benjamin S • 25 days ago Double check that you set your nginx passenger_ruby to point to RVM or Rbenv properly and that you set the global ruby version to 2.1.2. • Reply • Share ›

Benjamin S Chris Oliver • 25 days ago This is how it looks like.

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /home/deploy/.rvm/rubies/ruby-2.1.2/bin/ruby;

and

:~$ which ruby /home/deploy/.rvm/rubies/ruby-2.1.2/bin/ruby • Reply • Share ›

Load more comments

WHAT'S THIS? https://goraAilsL.cSoOm /dOeNpl oGy/OubRunAtuIL/1S4.04 21/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails ALSO ON GORAILS WHAT'S THIS? Episodes Setup Ruby on Rails on Ubuntu 14.04 3 comments • 11 months ago 72 comments • 6 months ago karam — keep it up guys! thanks for Mark Railton — Thanks Chris, this is the help. just what I was looking for to get my development server up and running.

3: Rails Application Structure Trying Out Bootstrap 3.0 by Chris 4 comments • a month ago Oliver DevinHe — Thank you for your great 5 comments • a year ago introduce.Now i also understand how codybarr — Thanks for this post. the Rails works more clearly. Worked like a charm!

Subscribe Add Disqus to your site

https://gorails.com/deploy/ubuntu/14.04 22/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

https://gorails.com/deploy/ubuntu/14.04 23/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

https://gorails.com/deploy/ubuntu/14.04 24/25 7/12/2014 Deploy Ruby On Rails on Ubuntu 14.04 Trusty Tahr - GoRails

Follow @excid3 1,520 followers Tweet 44

Copyright © Chris Oliver (http://excid3.com) 2014. St. Louis Ruby on Rails (/st-louis-ruby-on- rails) | About (/about)

https://gorails.com/deploy/ubuntu/14.04 25/25