Ruby On Rails with Apache2

Tuesday, June 28 2005 @ 09:46 AM BST

Contributed by: robin

I quite fancy getting up to speed with Ruby On Rails as it looks like a very powerful web app development environment. I'll probably end up running this from lighttpd, but that's one learning curve too many so, for now, I decided to get it running on my Fedora Core 4 box running Apache 2.

Here's what I did.

References:
http://wiki.rubyonrails.com/rails/revision/Fast%20CGI%20and%20Apache2%20for%20Red%20Hat%20Linux%209

http://wiki.rubyonrails.com/rails/show/FastCGI

http://www.infused.org/2005/03/19/ruby-on-rails-apache-fastcgi-and-ensim/

Ruby
# yum install ruby ruby-docs ruby-devel rdoc irb

Note: ruby-devel needed to build ruby gems later

mod_fastcgi

# cd /usr/src/redhat/RPMS/i386
# wget ftp://ftp.wesmo.com/pub/redhat/i386/mod_fastcgi-2.4.2-1.i386.rpm

Note: SRPM also available: ftp://ftp.wesmo.com/pub/redhat/SRPMS/mod_fastcgi-2.4.2-1.src.rpm

# rpm -ivh mod_fastcgi-2.4.2-1.i386.rpm
# ls -l /etc/httpd/modules/mod_fastcgi.so
-rw-r--r-- 1 root root 339557 Jan 26 2004 /etc/httpd/modules/mod_fastcgi.so

All other modules are world-executable. Not sure if this is relevant, but just to be safe:

# chmod +x /etc/httpd/modules/mod_fastcgi.so
# ls -l /etc/httpd/modules/mod_fastcgi.so
-rwxr-xr-x 1 root root 339557 Jan 26 2004 /etc/httpd/modules/mod_fastcgi.so

# vi /etc/httpd/conf/httpd.conf

Add lines:

LoadModule fastcgi_module modules/mod_fastcgi.so
<IfModule mod_fastcgi.c>
FastCgiIpcDir /tmp/fcgi_ipc/
AddHandler fastcgi-script .fcgi .fcg .fpl
</IfModule>

Question: is ExecCGI required for FastCGI scripts as well as CGI?

Add rails.robinbowes.com to DNS

Add a new host for the rails test app

# vi /etc/httpd/conf.d/virtualhosts.conf

<VirtualHost *:80>
ServerName rails.robinbowes.com
ServerAdmin robin-rails@robinbowes.com
ErrorLog logs/rails.robinbowes.com-error_log
CustomLog logs/rails.robinbowes.com-access_log combined
DocumentRoot /home/apache/robinbowes.com/rails/live/public/
<Directory /home/apache/robinbowes.com/rails/live/public/>
Options ExecCGI FollowSymLinks
AllowOverride all
Allow from all
Order allow,deny
</Directory>
</VirtualHost>

# service httpd restart

Ruby Gems
- http://wiki.rubyonrails.com/rails/show/RubyGems

# cd /usr/local/src
# wget http://rubyforge.org/frs/download.php/3700/rubygems-0.8.10.tgz
# tar zxvf rubygems-0.8.10.tgz
# cd rubygems-0.8.10
# ruby setup.rb

Rails
- http://wiki.rubyonrails.com/rails/show/GemRails

# gem install rails

Create a test app

# cd /home/apache/robinbowes.com/rails
# rails test
# ln -s test live
# cd live
# chown -R apache:apache .
# vi public/dispatch.fcgi

Replace "require 'fcgi'" with:

require 'rubygems'
require_gem 'fcgi'

# vi /public/.htaccess

Change "RewriteRule ^(.*)$ dispatch.cgi [QSA,L]" to:

RewriteRule ^(.*)$ /dispatch.fcgi?$1 [QSA,L]

# chmod 755 public/dispatch.fcgi
# chmod 755 public/.htaccess

Check it out:

http://rails.robinbowes.com

Yay, it works!

Comments (0)


robinbowes.com
http://robinbowes.com/article.php/20050628094601632