[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