Using mod_fcgid for Ruby on Rails Applications
Published January 1st, 2006
Many people know about the old school mod_fastcgi, but very few know about mod_fcgid. To put it extremely briefly, if you are using Apache 2, and you should be, you should be using modfcgid, and not modfastcgi.
Here quick guide on how to configure mod_fcgid for use with Apache HTTPD 2.2.0 and Typo, a RoR blog engine:
- Download and Prepare mod_fcgid
wget http://fastcgi.coremail.cn/mod_fcgid.1.07.tar.gz tar -xvzf modfcgid.1.07.tar.gz cd modfcgid.1.07
- Edit the Makefile. Change the
_top_dir
variable to the prefix of your Apache 2 install. - Apply this patch for mod_fcgid:
wget http://constant.northnitch.com/~chip/mod_fcgid.1.07-apache2.2.0.patch patch -p0 < mod_fcgid.1.07-apache2.2.0.patch
This patch has been submitted upstream, and should be part of the next release.
- Run ‘make’.
- Copy .libs/modfcgid.so_ to your Apache modules directory
- Add the following to your httpd.conf, to load the module:
LoadModule fcgid_module modules/mod_fcgid.so IPCCommTimeout 40 IPCConnectTimeout 10
- Configure mod_fcgid for your Rails Application:
<VirtualHost *:80> ... # Insert the rest of your vhost config here. ServerName foo.example.com <Location /journal> RewriteEngine On # Let apache handle purely static files like images by itself. RewriteCond %{REQUEST_FILENAME} !-f # Send Everything else to Typo RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] </Location> <Directory /sites/foo.example.com/public_html/journal> # ExecCGI is required for mod_fcgid to work. Options Indexes FollowSymLinks ExecCGI # Disable .htaccess files. AllowOverride None Order allow,deny Allow from all # This tells mod_fcgid to run the dispatch.fcgi script as a FastCGI AddHandler fcgid-script .fcgi </Directory> .... </VirtualHost>
- Thats it.
This whole process can be easier, since modfcgid is also in many packaging systems, including [FreeBSD’s Ports](http://www.freshports.org/www/modfcgid), and Gentoo Portage.
Written by Paul Querna, CTO @ ScaleFT. @pquerna