Deploying Ruby on Rails

This article is an introduction to the installation and deployment of Ruby on Rails.

What is Ruby on Rails?

Ruby is a programming language just like Perl, Python or PHP. Rails is an open source Ruby framework for developing database-backed web applications. You could develop a web application at least ten times faster with Rails than you could with a typical Java framework. It is a web application framework written in the Ruby programming language.

We tried the installation of Ruby on Rails on a server with this configuration:
1. Red Hat Linux release 7.3
2. Plesk 5.0.5
3. Apache 1.3.27
4. PHP 4.3.4 # Run as an Apache Module

Install Ruby

Before installing Ruby, first check if zlib is installed in PHP. You can do this by running a simple script with this code.

<?php phpinfo(); ?>

Now you are all set to start the installation.

 cd /usr/local/src 
 wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.2.tar.gz 
 tar xvzf ruby-1.8.2.tar.gz 
 cd ruby-1.8.2 
 ./configure 
 make 
 make install 
 ruby rubytest.rb

If the installaiton is successful, then you will get a message "test succeeded".

 

Install RubyGems

 cd /usr/local/src 
 wget http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz 
 tar xvzf rubygems-0.8.11.tgz 
 cd rubygems-0.8.11 
 ruby setup.rb all 

This step involves execution of `ruby setup.rb` with arguments `config / setup / install` all together

 gem query --local   
OR    
 gem q -L 

Listing all installed gems

Install Rails

 gem install rails   OR # (Enter Y for all dependencies) 
 gem install rails --include-dependencies	

Install FastCGI

 wget http://fastcgi.com/dist/fcgi-2.4.0.tar.gz 
 tar -xvzf fcgi-2.4.0.tar.gz 
 cd fcgi-2.4.0 
 ./configure 
 make 
 make install	

Install mod_fastcgi

 wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz 
 tar -xvzf mod_fastcgi-2.4.2.tar.gz 
 cd mod_fastcgi-2.4.2 
 /path/to/apxs -o mod_fastcgi.so -c *.c 
 /path/to/apxs -i -a -n fastcgi mod_fastcgi.so 

In Apache's httpd.conf, add this line.

 Include /path/to/httpd/conf/fastcgi.conf 

Now, add this text to fastcgi.conf

cat > /path/to/httpd/conf/fastcgi.conf 
    User apache 
    Group apache 
    <IfModule mod_fastcgi.c> 
    FastCgiConfig -idle-timeout 900 
    AddHandler fastcgi-script .fcgi .fpl .rb 
    FastCgiIpcDir /tmp/fastcgi_ipc/ 
    FastCgiSuexec /usr/sbin/suexec  # To make FastCGI run as suexec. Use path to suexec 
    </IfModule> 

Ctrl + D
 mkdir /tmp/fastcgi_ipc/ 
 chown -R apache.apache /tmp/fastcgi_ipc   
 chmod 700 /tmp/fastcgi_ipc/                        
 service httpd restart	

NOTE : In some systems, the ownership of fastcgi_ipc is done by Apache itself, but its safe to include these steps in your routine.

Related files: /usr/local/lib/ruby/gems/1.8/gems/rails-1.0.0/dispatches/dispatch.fcgi # OR ~USER/<app_name>/public/dispatch.fcgi # Log file declaration & all

 

Install gem bindings

To install gem bindings for Fastcgi and MySQL

 gem install fcgi 
 gem install mysql	

 

Testing

1. Install Test Application

 cd ~USER 
 rails testapp  # Create a test application named 'testapp' 
 cd testapp/ 
 ./script/generate controller test 
 cd ~USER/httpdocs 
 ln -s ~USER/testapp/public rails # In order to access the test application '~USER/testapp/public' from the browser 

In order to allow symlinks, enter the following in to ~USER/httpdocs/.htaccess

 Options Indexes +FollowSymLinks 

Now you need to set the correct ownership and permissions for the test application. I did the following for my project. You can learn from the example:

 cd ~USER 
 chown -R USER.psacln testapp 
 chmod -R 755 testapp 
 chown -R USER.psacln httpdocs/rails 
 chmod -R 755 httpdocs/rails	

 

Create Test Pages

cd ~USER 
cd ~USER/testapp/app/controllers 

Create a file called test_controller.rb and put in the following code:

cat > test_controller.rb
  class TestController < ApplicationController 
  def hi 
  render :text => 'Hi world' 
  end 
  def hello 
  end 
  def index 
  render :text => 'Hi! This is the Index.' 
  end 
  end
Ctrl + D

Now create the test page.

cat > ~USER/testapp/app/views/test/hello.rhtml # The test page 
  <html> 
   <head> 
     <title>Hello World</title> 
   </head> 
   <body> 
     <h1>Hello from Rails!</h1> 
     <p>The current time is <%= Time.now %></p> 
   </body> 
 </html>	

Ctrl + D

Now just access the URL: http://yourdomain/rails/test/hi

NOTE:- Remember to change ownership of the test pages you created.

Congrats! You have installed Ruby On Rails  :)

 

Reference:

Installing Ruby on Rails in Plesk http://wiki.rubyonrails.com/rails/pages/HowtoInstallAndRunRubyOnRailsOnPlesk

Installation guide of RubyGems http://docs.rubygems.org/read/chapter/3

The gem help http://docs.rubygems.org/read/chapter/2#page8

What the Plesk Community has to say: http://forum.plesk.com/showthread.php?s=5fa6b827deed52b07b96443bba070b8f&threadid=5515&perpage=15&highlight=modfastcgi&pagenumber=1


By Rashid Mullali Mohamed Kunhi

Rashid Mullali Mohamed Kunhi works in Bobcares as Jr. Engineer. He primarily works on Plesk servers on Linux.