Getting started with web applications on Mono
17 Feb 2012
I’ve started to explore mono, with a view to moving some of our web applications to Linux. Used MonoDevelop on OSX to spike a simple HttpHandler to return a response. I was more interested in how the hosting and deployment story worked with mono.
This is a little list of things I discovered as I went along.
http://www.mono-project.com/ASP.NET has list of the hosting options available. Went with the Nginx option. Mono comes with xsp, which is useful for local testing.
Running a simple web application
To run xsp /usr/bin/xsp –port 9090 –root
To install Nginx on OSX, get Homebrew. And then simply sudo brew install nginix
Follow the instructions here http://www.mono-project.com/FastCGI_Nginx to configure Nginix to work with Mono’s FastCGI server.
On OSX, the Nginix configs can be found in /usr/local/etc/nginx/nginx.conf
This is the configuration I tried for my testing,
In /usr/local/etc/nginx/nginx.conf
server{
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost_mono_access.log;
location / {
root /Users/hibri/Projects/WebApp/;
index default.aspx index.html;
fastcgi_index default.aspx;
fastcgi_pass 127.0.0.1:9000;
include /usr/local/etc/nginx/fastcgi_params;
}
}
Add the following lines to /usr/local/etc/nginx/fastcgi_params
fastcgi_param PATH_INFO ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Start Nginx.
Start the Mono FastCGI server
fastcgi-mono-server2
/applications=localhost:/:/Users/hibri/Projects/WebApp/ /socket=tcp:127.0.0.1:9000
And the application is available on http://localhost
Web Frameworks
We use OpenRasta for the services I want to run on Linux. OR didn’t work out of the box. This is something I’ll be exploring in the next few days.
Tried ServiceStack too, and was able to get one our projects (https://github.com/gregsochanik/basic-servicestack-catalogue) working on Mono as is. Nancy is next on the list.