Ubuntu 8.04 Rails Server Using Passenger 20

Posted by Ron Valente Wed, 07 May 2008 02:50:00 GMT

Introduction

So before my monstrous OpenSolaris 2008.05 post on setting up a Ruby on Rails server I decided to write a guide on setting up a Ubuntu 8.04 server guide for all you Slicehost users! I decided to write this guide because of the new optimized kernel that was added to Ubuntu Server 8.04 for virtualized environments. I also wanted a complete guide that would be a solid reference and now just have bits and pieces for upcoming sysadmins will get lost when reading.

For simplicity I will start with a black machine and build upon that. Use the comments section for specific questions or starting points. I will try to do my best at answering any and all questions.

Requirements

This section will go over the simple requirements of the entire setup.

Hardware

Ubuntu 8.04 Server - This could be anything below:

  • Slicehost
  • VMware
  • Bare Metal Install

Software

  • Apache 2.2.8
  • MySQL/PostgreSQL/SQLite3
  • Git
  • Ruby
  • Rubygems
    • Rails
    • Capistrano
    • RSpec
    • Ultrasphinx
    • Passenger

Installation of Software

First thing before we start installing anything on this machine we must update the server. This is very simple with Ubuntu, it is two simple commands and you are all set. You only need to reboot the machine if a kernel was installed.

sudo apt-get update
sudo apt-get dist-upgrade

Now that the machine is updated we must install some essential tools in order to build software on this server. Once we are done with the setup it would be a good idea to remove these tools to increase security on our server.

sudo apt-get install build-essential

Now we are all set with the preparation of the server and we can start installing the software we need to get going.

Web Server

For the web server I chose to use Apache 2 because of the new Passenger gem or (mod_rails). This gem is great because of the simplicity to deploy new applications.

sudo apt-get install apache2 apache2-dev

Database Server

The database server that should be used is completely up to your preference. My recommendation is PostgreSQL. PostgreSQL is a very robust and fast database server that is rock solid. It does use a lot of resources so for Slicehost it may not be the best choice. A major player for a slim and fast database for Slicehost should be SQLite3. It is a wonderful database and should be thrown out so quickly because of its lack of a client/server architecture.

For this tutorial I will install MySQL because of its popularity with the Rails community.

sudo apt-get install mysql-server

When prompted enter a root password, make this complex and write it down.

Version Control

Git is the most sexy version control system every created. I will never look back to subversion again. Now that capistraon and redmine both support git I have no reason to even thing about those awful three letters.

To install git is yet another apt-get command away. Run the following command in the terminal of your new server.

sudo apt-get install git-core curl gitweb

gitweb is an optional web frontend for your applications. I do not use it because I use GitNub a RubyCocoa application for the Mac.

Once that finishes git is completely installed and ready to go.

Ruby

Installing Ruby on Ubuntu 8.04 is quite simple. Just another apt-get and you are all set... almost. Since the inception of Ruby 1.9.0 distributions have been naming the current stable release of ruby "ruby1.8" That being said we will make a couple symlinks.

Ruby 1.8.6

To install all the tools you will want on this server run the following command:

sudo apt-get install ruby1.8 ruby1.8-dev rdoc1.8 ri1.8 libopenssl-ruby1.8

Rubygems

I refuse to install Rubygems with apt-get. This is such a terrible idea in my opinion. There is no reason to install rubygems with a package manager because it can update itself. I will go over how to update rubygems later in this howto.

wget http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz
tar -xzf rubygems-1.1.1.tgz
cd rubygems-1.1.1
sudo ruby1.8 setup.rb

Optional: Once you are done with install just run the next three commands to make using gems and Rubygems just as before.

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

Recommended Gems

Here is a list of recommended gems that should be installed once rubygems is installed. At the very least you must install rails and passenger.

sudo gem install rails
sudo gem install capistrano
sudo gem install rspec
sudo gem install ultrasphinx
sudo gem install passenger
sudo gem install mysql

Part Two

Next week I will go over how to connect all the pieces together and get a sexy Ruby on Rails server running smoothly. I will go over configuring git on your local computer as well as setting up passenger and capistrano to function with all of the above sexy applications we just installed.

Trackbacks

Use the following link to trackback from your own site:
http://www.sysadminschronicles.com/trackbacks?article_id=ubuntu-8-04-rails-server-using-passenger&day=06&month=05&year=2008

  1. Story added fsdaily.com
    This story has been submitted to fsdaily.com! If you think this story should be read by the free software community, come vote it up and discuss it here: http://www.fsdaily.com/HighEnd/GNU_Linux_Rails_Server_Using_Passenger_part_1
Comments

Leave a comment

  1. Piku about 19 hours later:

    Nice post, i’ll be glad to hear your guide and thoughts on OpenSolaris.

    Just a small typo: it’s ‘sudo gem install capistrano’

  2. Scott Becker about 21 hours later:

    Cool. Following along. Noticed another typo:

    URL to rubygems should be: http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz

  3. Scott Becker about 22 hours later:

    Should also run “sudo apt-get install apache2-mpm-prefork” or passenger is going to complain when you run “passenger-install-apache2-module”

  4. Ron Valente 1 day later:

    Piku, Glad you liked it, thanks for the fix.

    Scott, Worker is more friendly to hosted environments like slicehost. Worker is not officially tested but deemed ok for use with Passenger.

  5. meekish 1 day later:

    Can you explain what makes modworker better for a VPS? I have some PHP apps on my server and am hesitant to ditch modphp for mod_fcgid.

  6. meekish 2 days later:
  7. rockmanx.wordpress.com 2 days later:

    Thanks man! I did it thanks to you… luck you mayts!

  8. Ron Valente 4 days later:

    I am glad to see everyone’s success so far with this server setup. I am almost done with the second part of the guide.

    -Ron

  9. gaw.in 8 days later:

    Gitweb does not install correctly:
    apt-get install git-core curl *gitweb*
    Result:
    E: Regex compilation error - Invalid preceding regular expression

    This can be fixed by splitting up the command to:
    apt-get install git-core
    apt-get install gitweb


    OR just combine the command:
    apt-get install git-core gitweb

    Don’t forget to sudo ;-)

  10. gaw.in 8 days later:

    Rubygems
    First setup the symbolic links, and then run the ruby setup.rb Otherwise it would not find ruby. If running setup.rb gives you errors, try running it with sudo privileges.

  11. Si 8 days later:

    Dont’ forget

    sudo gem install mysql

  12. Sam 9 days later:

    At the start:

    Shouldn’t it be:

    sudo apt-get update

    sudo apt-get dist-upgrade

    and not… (note “install”)

    sudo apt-get install update

    sudo apt-get install dist-upgrade

  13. Ron Valente 10 days later:

    @ Sam, Si, and Gaw.in

    Thanks for the updates…

    when I wrote gitweb i was referring to the note below. That was my mistake not making that clearer.

    I will make the updates now.

    -Ron

  14. Jeff 16 days later:

    I’m trying to run through this with the latest ubuntu setup… I’m getting this error when I try to install the mysql gem. Any ideas?

    $ gem install mysql

    Building native extensions. This could take a while… ERROR: Error installing mysql: ERROR: Failed to build gem native extension.

    /usr/bin/ruby1.8 extconf.rb install mysql checking for mysql_query() in -lmysqlclient… no checking for main() in -lm… yes checking for mysql_query() in -lmysqlclient… no checking for main() in -lz… yes checking for mysql_query() in -lmysqlclient… no checking for main() in -lsocket… no checking for mysql_query() in -lmysqlclient… no checking for main() in -lnsl… yes checking for mysql_query() in -lmysqlclient… no * extconf.rb failed * Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.

  15. Jeff 16 days later:

    I was able to solve my problem by running:

    apt-get install libmysqlclient15-dev

  16. Mathieu Martin about 1 month later:

    For those who might like to do it through SSH instead of directly on said machine (e.g. for a fresh install):

    On the server:

    sudo apt-get install openssh-server

    On the client:

    ssh username@serveraddress

  17. icebreaker about 1 month later:

    Re: sudo apt-get install apache2 apache2-dev. It seems it is necessary to replace the last part with: apache2-threaded-dev

  18. part 3? about 1 month later:

    what happened to part 3?

  19. ? about 1 month later:

    at least on 8.04 JeOS ubuntu doesnt come with gem’s demendency rdoc–took me a which to figure this out

  20. ? about 1 month later:

    and wget or tuby 1.8 i guess its quite trimmed

Comments