FastCGI ASP.NET Server Status Report 6/7/8
Posted by Brian on July 21, 2007
This is a status report for the weeks of July 2 – July 20. I first apologize for the lack of reports lately. A combination of family vacation, exams, reinstalling Linux, and lack of Internet access, among other things, combined with the spot I was at in the goals got the best of me. However, I’ve come back more focused, with new ideas and plans, so the coming weeks should be more promising.
THIS WEEK’S ACCOMPLISHMENTS
This week I worked at re-prioritizing project goals, putting automatic configuration above a configuration application.
I implemented automatic application detection. Now you can simply call:
fastcgi-mono-server /socket=tcp:1234 /automappaths
That way you can just drop your ASPX files in the standard htdocs or public_html directories and an appropriate application is registered. This should overcome a lot of confusion in configuration and for automatic registration when creating new sub-domains or users.
Beyond that, I got the server working perfectly on Lighttpd:
In /etc/lighttpd/conf.d/fastcgi.conf:
#######################################################################
##
## FastCGI Module
## ---------------
##
## http://www.lighttpd.net/documentation/fastcgi.html
##
server.modules += ( "mod_fastcgi" )
fastcgi.server = (
".aspx" => (( "host" => "127.0.0.1", "port" => 1234 )),
".asmx" => (( "host" => "127.0.0.1", "port" => 1234 )),
".ashx" => (( "host" => "127.0.0.1", "port" => 1234 )),
".asax" => (( "host" => "127.0.0.1", "port" => 1234 )),
".ascx" => (( "host" => "127.0.0.1", "port" => 1234 )),
".soap" => (( "host" => "127.0.0.1", "port" => 1234 )),
".rem" => (( "host" => "127.0.0.1", "port" => 1234 )),
".axd" => (( "host" => "127.0.0.1", "port" => 1234 )),
".cs" => (( "host" => "127.0.0.1", "port" => 1234 )),
".config" => (( "host" => "127.0.0.1", "port" => 1234 )),
".dll" => (( "host" => "127.0.0.1", "port" => 1234 ))
)
In /etc/lighttpd/modules.conf:
include "conf.d/fastcgi.conf"
In /etc/lighttpd/lighttpd.conf:
index-file.names = ( "index.xhtml", "index.html", "index.htm", "default.htm", "index.php", "default.aspx", "index.aspx" )
PLANS FOR THE COMING WEEK
- I’m going to work with my mentor to develop a plan for a control panel and additional auto-configuration.
- I’m going to work with the mono developers on “the socket issue”.
- I’m going to contact developers of various FastCGI implementations on servers to overcome various issues I’ve encountered.
- I’m going to start reorganizing the source for autotools.
- I’m going to continue work on documentation.
CHALLENGES I’M FACING
I’ve had trouble getting enough time in due to family obligations and coursework. I’ve also had a lack of motivation due to a lack of clarity over how to address the control panel. Both of these problems should be resolved.
Sincerely,
Brian Nickel












luc said
Great stuff ! is the fastcgi-mono handler publicly available?
Brian said
Hi Luc,
At the moment, you will need to do something along the lines of the following:
1. Check out the latest version from Subversion:
2. Open the project in MonoDevelop.
3. Build Mono.FastCgi, Mono.WebServer, and Mono.WebServer.FastCgi
4. Enter FastCgi/bin in the console.
5. Run MONO_PATH=. mono fastcgi-mono-server.exe /socket=tcp:1234 /automappaths
I’m hoping to have something with autotools by next week or the week after to make things a little more graceful.
- Brian