# Deploying rails with mod\_fastcgid on linux

**URL:** <https://www.ruby-forum.com/t/deploying-rails-with-mod-fastcgid-on-linux/130483>\
**Category:** Deployment\
**Created:** [February 28, 2008, 5:24pm UTC](https://www.ruby-forum.com/t/deploying-rails-with-mod-fastcgid-on-linux/130483 "2008-02-28T17:24:08Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [February 28, 2008, 5:24pm UTC](https://www.ruby-forum.com/t/deploying-rails-with-mod-fastcgid-on-linux/130483/1 "2008-02-28T17:24:08Z")

</div>

Hi,

Has anyone had success installing ruby on rails with mod\_fastcgid on  
Apache 2 with Linux (I’m running Fedora Core 6 distro)? I followed  
the instructions here –  
[http://journal.paul.querna.org/articles/2006/01/01/using-mod\_fcgid-for-ruby-on-rails-applications/](http://journal.paul.querna.org/articles/2006/01/01/using-mod_fcgid-for-ruby-on-rails-applications/),  
but when I request

[http://mydomain.com/easyrx/](http://mydomain.com/easyrx/)

I get an internal server error, and this appears in the error\_log:

[Wed Feb 27 15:02:36 2008] [error] [client 75.166.44.245] Request  
exceeded the limit of 10 internal redirects due to probable  
configuration error. Use ‘LimitInternalRecursion’ to increase the  
limit if necessary. Use ‘LogLevel debug’ to get a backtrace.

Any idea what I’m doing wrong? I added the \<VirtualHost \*:80\>  
directive below, which I bet is where the problem is.

Thanks, - Dave

=========================Begin httpd.conf==========================

# 

# This is the main Apache HTTP server configuration file. It

contains  
the

# configuration directives that give the server its instructions.

# See URL:http://httpd.apache.org/docs/2.2 for detailed

information.

# In particular, see

# URL:http://httpd.apache.org/docs/2.2/mod/directives.html

# for a discussion of each configuration directive.

# 

# Do NOT simply read the instructions in here without understanding

# what they do. They’re here only as hints or reminders. If you are

unsure

# consult the online docs. You have been warned.

# 

# Configuration and logfile names: If the filenames you specify for

many

# of the server’s control files begin with “/” (or “drive:/” for

Win32), the

# server will use that explicit path. If the filenames do _not_

begin

# with “/”, the value of ServerRoot is prepended – so “logs/foo.log”

# with ServerRoot set to “/usr/local/apache2” will be interpreted by

the

# server as “/usr/local/apache2/logs/foo.log”.

# 

# ServerRoot: The top of the directory tree under which the server’s

# configuration, error, and log files are kept.

# 

# Do not add a slash at the end of the directory path. If you point

# ServerRoot at a non-local disk, be sure to point the LockFile

directive

# at a local disk. If you wish to share the same ServerRoot for

multiple

# httpd daemons, you will need to change at least LockFile and

PidFile.

# 

ServerRoot “/usr/local/apache2”

# 

# Listen: Allows you to bind Apache to specific IP addresses and/or

# ports, instead of the default. See also the

# directive.

# 

# Change this to Listen on specific IP addresses as shown below to

# prevent Apache from glomming onto all bound IP addresses.

# 

#Listen 12.34.56.78:80  
Listen 80  
Listen 443  
  
ServerName [http://mydomain.com](http://mydomain.com)  
SSLEngine on  
SSLCertificateFile /usr/local/apache2/ssl/mydomain.com.cert  
SSLCertificateKeyFile /usr/local/apache2/ssl/mydomain.com.key

# 

# Dynamic Shared Object (DSO) Support

# 

# To be able to use the functionality of a module which was built as

a  
DSO you

# have to place corresponding `LoadModule’ lines at this location so

the

# directives contained in it are actually available _before_ they are

used.

# Statically compiled modules (those listed by `httpd -l’) do not

need

# to be loaded here.

# 

# Example:

# LoadModule foo\_module modules/mod\_foo.so

LoadModule php4\_module modules/libphp4.so

# 

```
  AddType application/x-httpd-php .php .phtml
  AddType application/x-httpd-php-source .phps

```

# Allow for ssl

#LoadModule ssl\_module modules/libmodssl.so

\<IfModule !mpm\_netware\_module\>

# 

# If you wish httpd to run as a different user or group, you must run

# httpd as root initially and it will switch.

# 

# User/Group: The name (or #number) of the user/group to run httpd

as.

# It is usually good practice to create a dedicated user and group

for

# running httpd, as with most system services.

# 

User daemon  
Group server

# ‘Main’ server configuration

# 

# The directives in this section set up the values used by the ‘main’

# server, which responds to any requests that aren’t handled by a

# definition. These values also provide defaults for

# any containers you may define later in the file.

# 

# All of these directives may appear inside containers,

# in which case these default settings will be overridden for the

# virtual host being defined.

# 

# 

# ServerAdmin: Your address, where problems with the server should be

# e-mailed. This address appears on some server-generated pages,

such

# as error documents. e.g. removed\_email\_address@domain.invalid

# 

ServerAdmin removed\_email\_address@domain.invalid

# 

# ServerName gives the name and port that the server uses to identify

itself.

# This can often be determined automatically, but we recommend you

specify

# it explicitly to prevent problems during startup.

# 

# If your host doesn’t have a registered DNS name, enter its IP

address here.

# 

#ServerName [www.example.com:80](http://www.example.com:80)

# 

# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory,

but

# symbolic links and aliases may be used to point to other locations.

# 

DocumentRoot “/usr/local/apache2/htdocs”

# 

# Each directory to which Apache has access can be configured with

respect

# to which services and features are allowed and/or disabled in that

# directory (and its subdirectories).

# 

# First, we configure the “default” to be a very restrictive set of

# features.

# 
 Options FollowSymLinks AllowOverride None Order deny,allow Deny from all
# 

# Note that from this point forward you must specifically allow

# particular features to be enabled - so if something’s not working

as

# you might expect, make sure that you have specifically enabled it

# below.

# 

# 

# This should be changed to whatever you set DocumentRoot to.

# 

\<Directory “/usr/local/apache2/htdocs”\>  
#  
# Possible values for the Options directive are “None”, “All”,  
# or any combination of:  
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI  
MultiViews  
#  
# Note that “MultiViews” must be named _explicitly_ — “Options  
All”  
# doesn’t give it to you.  
#  
# The Options directive is both complicated and important.  
Please  
see  
# [core - Apache HTTP Server Version 2.2](http://httpd.apache.org/docs/2.2/mod/core.html#options)  
# for more information.  
#  
Options ExecCGI Indexes FollowSymLinks

```
#
# AllowOverride controls what directives may be placed

```

in .htaccess files.  
# It can be “All”, “None”, or any combination of the keywords:  
# Options FileInfo AuthConfig Limit  
#  
AllowOverride All

```
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

```

\<Directory “/usr/local/apache2/htdocs/super\_admin\_rs/”\>  
Options ExecCGI Indexes FollowSymLinks  
AllowOverride All  
Order allow,deny  
Allow from all

# 

# DirectoryIndex: sets the file that Apache will serve if a directory

# is requested.

# 
 DirectoryIndex index.php index.html
# 

# The following lines prevent .htaccess and .htpasswd files from

being

# viewed by Web clients.

# 

\<FilesMatch “^.ht”\>  
Order allow,deny  
Deny from all  
Satisfy All

# 

# ErrorLog: The location of the error log file.

# If you do not specify an ErrorLog directive within a

# container, error messages relating to that virtual host will be

# logged here. If you _do_ define an error logfile for a
# container, that host's errors will be logged there and not here. # ErrorLog logs/error\_log
# 

# LogLevel: Control the number of messages logged to the error\_log.

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

# 

LogLevel warn

 # # The following directives define some format nicknames for use with # a CustomLog directive (see below). # LogFormat "%h %l %u %t \"%r\" %\>s %b \"%{Referer}i\" \"%{User- Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %\>s %b" common

```
<IfModule logio_module>
  # You need to enable mod_logio.c to use %I and %O
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-

```

Agent}i" %I %O" combinedio

```
#
# The location and format of the access logfile (Common Logfile

```

Format).  
# If you do not define any access logfiles within a   
# container, they will be logged here. Contrariwise, if you _do_  
# define per- access logfiles, transactions will be  
# logged therein and _not_ in this file.  
#  
CustomLog logs/access\_log common

```
#
# If you prefer a logfile with access, agent, and referer

```

information  
# (Combined Logfile Format) you can use the following directive.  
#  
#CustomLog logs/access\_log combined

 # # Redirect: Allows you to tell clients about documents that used to # exist in your server's namespace, but do not anymore. The client # will make a new request for the document at its new location. # Example: # Redirect permanent /foo http://www.example.com/bar

```
#
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
# Example:
# Alias /webpath /full/filesystem/path
#
# If you include a trailing / on /webpath then the server will
# require it to be present in the URL. You will also likely
# need to provide a <Directory> section to allow access to
# the filesystem path.

#
# ScriptAlias: This controls which directories contain server

```

scripts.  
# ScriptAliases are essentially the same as Aliases, except that  
# documents in the target directory are treated as applications  
and  
# run by the server when requested rather than as documents sent  
to the  
# client. The same rules about trailing “/” apply to ScriptAlias  
# directives as to Alias.  
#  
ScriptAlias /cgi-bin/ “/usr/local/apache2/cgi-bin/”

 # # ScriptSock: On threaded servers, designate the path to the UNIX # socket used to communicate with the CGI daemon of mod\_cgid. # #Scriptsock logs/cgisock
# 

# “/usr/local/apache2/cgi-bin” should be changed to whatever your

ScriptAliased

# CGI directory exists, if you have that configured.

# 

\<Directory “/usr/local/apache2/cgi-bin”\>  
AllowOverride None  
Options None  
Order allow,deny  
Allow from all

# 

# DefaultType: the default MIME type the server will use for a

document

# if it cannot otherwise determine one, such as from filename

extensions.

# If your server contains mostly text or HTML documents, “text/plain”

is

# a good value. If most of your content is binary, such as

applications

# or images, you may want to use “application/octet-stream” instead

to

# keep browsers from trying to display binary files as though they

are

# text.

# 

DefaultType text/plain

 # # TypesConfig points to the file containing the list of mappings from # filename extension to MIME-type. # TypesConfig conf/mime.types

```
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media

```

types:  
#  
AddType application/x-compress .Z  
AddType application/x-gzip .gz .tgz

```
#
# AddHandler allows you to map certain file extensions to

```

“handlers”:  
# actions unrelated to filetype. These can be either built into  
the server  
# or added with the Action directive (see below)  
#  
# To use CGI scripts outside of ScriptAliased directories:  
# (You will also need to add “ExecCGI” to the “Options”  
directive.)  
#  
AddHandler cgi-script .rhtml  
AddHandler cgi-script .rb  
AddHandler cgi-script .cgi

```
# For type maps (negotiated resources):
#AddHandler type-map var

#
# Filters allow you to process content before it is sent to the

```

client.  
#  
# To parse .shtml files for server-side includes (SSI):  
# (You will also need to add “Includes” to the “Options”  
directive.)  
#  
#AddType text/html .shtml  
#AddOutputFilter INCLUDES .shtml

# 

# The mod\_mime\_magic module allows the server to use various hints

from the

# contents of the file itself to determine its type. The

MIMEMagicFile

# directive tells the module where the hint definitions are located.

# 

#MIMEMagicFile conf/magic

# 

# Customizable error responses come in three flavors:

# 1) plain text 2) local redirects 3) external redirects

# 

# Some examples:

#ErrorDocument 500 “The server made a boo boo.”  
#ErrorDocument 404 /missing.html  
#ErrorDocument 404 “/cgi-bin/missing\_handler.pl”  
#ErrorDocument 402 [http://www.example.com/subscription\_info.html](http://www.example.com/subscription_info.html)

# 

# 

# EnableMMAP and EnableSendfile: On systems that support it,

# memory-mapping or the sendfile syscall is used to deliver

# files. This usually improves server performance, but must

# be turned off when serving from networked-mounted

# filesystems or if support for these functions is otherwise

# broken on your system.

# 

#EnableMMAP off  
#EnableSendfile off

# Supplemental configuration

# 

# The configuration files in the conf/extra/ directory can be

# included to add extra features or to modify the default

configuration of

# the server, or you may simply copy their contents here and change

as

# necessary.

# Server-pool management (MPM specific)

#Include conf/extra/httpd-mpm.conf

# Multi-language error messages

#Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings

#Include conf/extra/httpd-autoindex.conf

# Language settings

#Include conf/extra/httpd-languages.conf

# User home directories

#Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration

#Include conf/extra/httpd-info.conf

# Virtual hosts

#Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual

#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)

#Include conf/extra/httpd-dav.conf

# Various default settings

#Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections

#Include conf/extra/httpd-ssl.conf

# 

# Note: The following must must be present to support

# starting without SSL on platforms with no /dev/random

equivalent

# but a statically compiled-in mod\_ssl.

# 
SSLRandomSeed startup builtin SSLRandomSeed connect builtin

LoadModule fcgid\_module modules/mod\_fcgid.so  
IPCCommTimeout 40  
IPCConnectTimeout 10

\<VirtualHost \*:80\>

# Insert the rest of your vhost config here.

ServerName [mydomain.com](http://mydomain.com)

\<Location /easyrx\>  
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]

\<Directory /usr/local/apache2/htdocs/easyrx\>  
# 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

# 

# Mod\_jk settings

# 

# Load mod\_jk module

LoadModule jk\_module modules/mod\_jk.so

# Where to find workers.properties

JkWorkersFile conf/workers.properties

# Where to put jk logs

JkLogFile logs/mod\_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel debug

# Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

JkRequestLogFormat “%w %V %T”

# Send JSPs for context /jsp-examples to worker named default

#JkMount /jsp-examples/\*.jsp default

# Send servlets-examples to worker named default

#JkMount /servlets-examples/\* default

# Send JSPs for context /jsp-examples to worker named default

JkMount /\*.jsp default

RewriteLogLevel 9  
=========================End httpd.conf===========================
