[rt-users] lighttpd + FastCGI + RT - Initial Config Problem: 500 Internal Server Error

Maxwell A. Rathbone mrathbone at sagonet.com
Wed Nov 18 17:39:38 EST 2009


Hello,

After over a year of running RT/RT-IR under CentOS with Apache & mySQL, 
I decided to give it another go and create an entirely new server using 
Lighttpd and Postgres. I'm doing this half for the educational 
experience, and half because I've heard promising things about the 
performance of this combination versus Apache+mySQL. Our existing 
production server is also running an old version of RT, so I'm looking 
to upgrade to the latest and greatest as well.

This server is CentOS 5.4. I have perl 5.10.1 manually compiled 
side-by-side, with perl 5.8.x that comes in YUM by default. I've 
sym-linked the /usr/bin/perl so that when you check perl -v it shows 
5.10.1. I've updated all modules via CPAN, and ensured when I installed 
RT that all depedencies were resolved.

I've been able to get the lighttpd webserver working with 
FastCGI+PHP(/usr/bin/php-cgi), and it is able to serve up a phpinfo.php 
properly. So it does appear that portion works.

I installed RT with the following configure line:
./configure --enable-graphviz --enable-gd --enable-gpg 
--with-web-handler=fastcgi --with-db-type=Pg --with-web-user=lighttpd 
--with-web-group=lighttpd

I read that RT should be installed using the --with-web-user and 
--with-web-group to match the web server's user, thus why those switches 
are present.

At first I wasn't even able to get lighttpd to start. I discovered that 
I had to set a+r on /opt/rt3/etc/* so that it is able to read the 
RT_SiteConfig.php file. Once I corrected that, it started giving me 500 
Internal Server Error messages. Upon checking the 
/var/log/lighttpd/error.log, I see:
2009-11-18 17:18:52: (log.c.97) server started
2009-11-18 17:18:52: (server.c.925) WARNING: unknown config-key: 
setenv.add-environment (ignored)
2009-11-18 17:21:53: (mod_fastcgi.c.1768) connect failed: Connection 
refused on unix:/tmp/request-tracker.socket-3
2009-11-18 17:21:53: (mod_fastcgi.c.2956) backend died; we'll disable it 
for 5 seconds and send the request to another backend instead: 
reconnects: 0 load: 1
2009-11-18 17:21:55: (mod_fastcgi.c.2494) unexpected end-of-file 
(perhaps the fastcgi process died): pid: 8532 socket: 
unix:/tmp/request-tracker.socket-3
2009-11-18 17:21:55: (mod_fastcgi.c.3279) child exited, pid: 8532 
status: 255
2009-11-18 17:21:55: (mod_fastcgi.c.3326) response not received, request 
sent: 961 on socket: unix:/tmp/request-tracker.socket-3 for / , closing 
connection

Here is my /etc/lighttpd/lighttpd.conf file:

server.modules              = (
                                "mod_rewrite",
                                "mod_alias",
                                "mod_access",
                               "mod_fastcgi",
                                "mod_accesslog" )

server.document-root        = "/var/www/html"
server.errorlog             = "/var/log/lighttpd/error.log"
index-file.names            = ( "index.php", "index.html",
                                "index.htm", "default.htm" )

mimetype.assign             = (
  ".rpm"          =>      "application/x-rpm",
  ".pdf"          =>      "application/pdf",
  ".sig"          =>      "application/pgp-signature",
  ".spl"          =>      "application/futuresplash",
  ".class"        =>      "application/octet-stream",
  ".ps"           =>      "application/postscript",
  ".torrent"      =>      "application/x-bittorrent",
  ".dvi"          =>      "application/x-dvi",
  ".gz"           =>      "application/x-gzip",
  ".pac"          =>      "application/x-ns-proxy-autoconfig",
  ".swf"          =>      "application/x-shockwave-flash",
  ".tar.gz"       =>      "application/x-tgz",
  ".tgz"          =>      "application/x-tgz",
  ".tar"          =>      "application/x-tar",
  ".zip"          =>      "application/zip",
  ".mp3"          =>      "audio/mpeg",
  ".m3u"          =>      "audio/x-mpegurl",
  ".wma"          =>      "audio/x-ms-wma",
  ".wax"          =>      "audio/x-ms-wax",
  ".ogg"          =>      "application/ogg",
  ".wav"          =>      "audio/x-wav",
  ".gif"          =>      "image/gif",
  ".jar"          =>      "application/x-java-archive",
  ".jpg"          =>      "image/jpeg",
  ".jpeg"         =>      "image/jpeg",
  ".png"          =>      "image/png",
  ".xbm"          =>      "image/x-xbitmap",
  ".xpm"          =>      "image/x-xpixmap",
  ".xwd"          =>      "image/x-xwindowdump",
  ".css"          =>      "text/css",
  ".html"         =>      "text/html",
  ".htm"          =>      "text/html",
  ".js"           =>      "text/javascript",
  ".asc"          =>      "text/plain",
  ".c"            =>      "text/plain",
  ".cpp"          =>      "text/plain",
  ".log"          =>      "text/plain",
  ".conf"         =>      "text/plain",
  ".text"         =>      "text/plain",
  ".txt"          =>      "text/plain",
  ".dtd"          =>      "text/xml",
  ".xml"          =>      "text/xml",
  ".mpeg"         =>      "video/mpeg",
  ".mpg"          =>      "video/mpeg",
  ".mov"          =>      "video/quicktime",
  ".qt"           =>      "video/quicktime",
  ".avi"          =>      "video/x-msvideo",
  ".asf"          =>      "video/x-ms-asf",
  ".asx"          =>      "video/x-ms-asf",
  ".wmv"          =>      "video/x-ms-wmv",
  ".bz2"          =>      "application/x-bzip",
  ".tbz"          =>      "application/x-bzip-compressed-tar",
  ".tar.bz2"      =>      "application/x-bzip-compressed-tar",
  # default mime type
  ""              =>      "application/octet-stream",
 )

accesslog.filename          = "/var/log/lighttpd/access.log"
url.access-deny             = ( "~", ".inc" )

$HTTP["url"] =~ "\.pdf$" {
  server.range-requests = "disable"
}

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
server.pid-file            = "/var/run/lighttpd.pid"
server.username            = "lighttpd"
server.groupname           = "lighttpd"

fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => 
"/var/run/lighttpd/php-fastcgi.socket",
                                   "bin-path" => "/usr/bin/php-cgi"
                                 )
                               )
                            )

$HTTP["host"] =~ "rt.sagonet.com" {
  # Specify the documentroot
  server.document-root = "/opt/rt3/share/html"

  # Map appropriate files and extensions
  fastcgi.map-extensions = ( ".css" => ".html", ".js" => ".html", "/" => 
".html", "mail-gateway" => ".html", "Search/Chart" => ".html", 
"Search/Results.rdf" => ".html", "Search/Results.tsv" => ".html" )

  # Set Lighttpd to check for an index.html file for each directory
  index-file.names = ( "index.html" )

  # Disallow access to .mhtml files
  url.access-deny = ( ".mhtml" )

  setenv.add-environment = (
       "SCRIPT_NAME" => "/",
  )

#  # Set up an alias for the /NoAuth/images location
#  url.rewrite-once = (
#       "^/(?!NoAuth/images/)(.*)" => "/$1",
#  )

  # Add trailing slash so attachment downloads work
  url.rewrite-once = (
        "^(.*)/Ticket/Attachment/(.*)" => "/$1/Ticket/Attachment/$2/"
  )

  # Set up FastCGI handler
  fastcgi.server = ( ".html" =>
     ((
                "socket" => "/tmp/request-tracker.socket",
                "check-local" => "disable",
                "bin-path" => "/opt/rt3/bin/mason_handler.fcgi",
                "bin-environment" => (
                        "PHP_FCGI_CHILDREN" => "4",
                        "PHP_FCGI_MAX_REQUESTS" => "10000",
                ),
                "bin-copy-environment" => (
                        "PATH", "SHELL", "USER"
                ),

      ))
  )

}


I've tried two different handlers for the 'bin-path' line a few lines up 
from here. The one above is provided by default with RT. It is the one 
that is able to at least generate an 500 Internal Server Error. I also 
tried the mason_lighttpd_handler.fcgi located at: 
http://redmine.lighttpd.net/projects/1/wiki/RequestTracker

The mason_lighttpd_handler.fcgi handler does not even generate the 500 
Internal Server. When I pull up RT in my browser, it kills lighttpd, 
with the following error in the /var/log/lighttpd/error.log:
2009-11-18 17:23:24: (mod_fastcgi.c.1051) the fastcgi-backend 
/opt/rt3/bin/mason_lighttpd_handler.fcgi failed to start:
2009-11-18 17:23:24: (mod_fastcgi.c.1055) child exited with status 2 
/opt/rt3/bin/mason_lighttpd_handler.fcgi
2009-11-18 17:23:24: (mod_fastcgi.c.1058) If you're trying to run PHP as 
a FastCGI backend, make sure you're using the FastCGI-enabled version.
You can find out if it is the right one by executing 'php -v' and it 
should display '(cgi-fcgi)' in the output, NOT '(cgi)' NOR '(cli)'.
For more information, check 
http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI#preparing-php-as-a-fastcgi-programIf 
this is PHP on Gentoo, add 'fastcgi' to the USE flags.
2009-11-18 17:23:24: (mod_fastcgi.c.1365) [ERROR]: spawning fcgi failed.
2009-11-18 17:23:24: (server.c.902) Configuration of plugins failed. 
Going down.

I can't help but feel like I must be missing something very basic here. 
The web server appears to work fine with FastCGI & PHP, so it appears to 
be the handler that is causing the problem. I did manually compile perl. 
There is no suid on this server.

I've spent the better part of my workday today researching JUST this 
issue. I've searched the archives on this mailing list, as well as 
extensively searched google using about every variation of words from 
the error or descriptive text of the problem. I was able to find several 
other people who encountered this problem, but no one ever posted a 
resolution.

Any help that could be provided on this would be GREATLY appreciated. 
I'm hoping someone replies by tomorrow so I'll have a fresh start 
tomorrow on trying to get this working. I'd really like to not have to 
resort back to Apache unless I exhaust all possible options.

[root at rt rt-3.8.6]# ls -l /opt/rt3/bin
total 144
-rwxr-xr-x 1 root rt  3178 Nov 18 16:49 mason_handler.fcgi
-rwxr-xr-x 1 root rt  2563 Nov 18 16:49 mason_handler.scgi
-rwxr-xr-x 1 root rt  8024 Nov 18 16:49 mason_handler.svc
-rwxr-xr-x 1 root rt  3190 Nov 18 16:25 mason_lighttpd_handler.fcgi
-rwxr-xr-x 1 root rt 76930 Nov 18 16:49 rt
-rwxr-xr-x 1 root rt 12163 Nov 18 16:49 rt-crontool
-rwxr-xr-x 1 root rt 12666 Nov 18 16:49 rt-mailgate
-rwxr-xr-x 1 root rt  5502 Nov 18 16:49 standalone_httpd
-rwxr-xr-x 1 root rt  5468 Nov 18 16:49 webmux.pl


thanks in advance

Max Rathbone




More information about the rt-users mailing list