Asp.Net su Linux con Mono e Lighttpd

Mono framework è una libera implementazione (open source) del framework .Net di Microsoft. In questa guida vediamo come abilitare Lighttpd (alternativa più leggera di Apache) ad eseguire pagine asp.net utilizzando proprio Mono framework.

La distribuzione linux che ho utilizzato è Mageia ma i pacchetti sono disponibili praticamente per tutte le maggiori distribuzioni e le modalità di configurazione sono pressochè identiche.

 

Installiamo i pacchetti necessari

Oltre al pacchetto lighttpd dobbiamo installare il pacchetto xsp che contiene sia il motore asp.net che il modulo per l’utilizzo mediante fastcgi (fastcgi-mono-server2).

Configuriamo Lighttpd

Il file di configurazione di lighttpd è /etc/lighttpd/lighttpd.conf, in questo file c’è il riferimento al file /etc/lighttpd/modules.conf dove sono contenuti i vari link ai moduli. Per abilitare il modulo fastcgi deve essere abilitato il modulo nel file modules.conf, quindi apriamo il file e decommentiamo, se non è già decommentata, la riga per l’inclusione del modulo:

## ## FastCGI (mod_fastcgi) ## include "conf.d/fastcgi.conf"

Passiamo adesso alla configurazione del modulo fastcgi editando il file /etc/lighttpd/conf.d/fastcgi.conf. Le prime righe che ci interessano sono

include "conf.d/mono.conf" server.modules += ( "mod_fastcgi" )

la prima include il file di configurazione specifico per il framework Mono che editiamo nel prossimo punto, la seconda aggiunge il modulo fastcgi all’elenco dei moduli da caricare. Adesso abbiamo il blocco di configurazione per l’interazione vera e propria con il motore fastcgi di Mono:

$HTTP["url"] !~ "^/(Css|Images)/" {     fastcgi.server = (        "" => ((                "socket" => mono_shared_dir + "fastcgi-mono-server",                "bin-path" => mono_fastcgi_server,                "bin-environment" => (                        "PATH" => "/bin:/usr/bin:" + mono_dir + "bin",                        "LD_LIBRARY_PATH" => mono_dir + "lib:",                        "MONO_SHARED_DIR" => mono_shared_dir,                        "MONO_FCGI_LOGLEVELS" => "Standard",                        "MONO_FCGI_LOGFILE" => mono_shared_dir + "fastcgi.log",                        "MONO_FCGI_ROOT" => mono_fcgi_root,                        "MONO_FCGI_APPLICATIONS" => mono_fcgi_applications                ),                "max-procs" => 1,                "check-local" => "disable"        ))     ) }

nell’esempio quì sopra la prima riga serve ad escludere dalla gestione del motore fastcgi le cartelle Css e Images e inviare al browser i file così come sono. Gli altri settaggi fanno riferimento a parametri definiti nel file mono.conf che vediamo più in basso.

L’ultimo blocco riguarda la mappatura delle estensioni:

fastcgi.map-extensions = (        ".asmx"   => ".aspx",        ".ashx"   => ".aspx",        ".asax"   => ".aspx",        ".ascx"   => ".aspx",        ".soap"   => ".aspx",        ".rem"    => ".aspx",        ".axd"    => ".aspx",        ".cs"     => ".aspx",        ".config" => ".aspx",        ".dll"    => ".aspx" )

 

Configuriamo il file conf.d/mono.conf

In questo file sono contenuti i parametri specifici del motore asp.net.

# impostiamo i documenti predefiniti, ricordiamoci che linux è case sensitive index-file.names += ( "index.aspx", "default.aspx" )  # questa è la cartella di installazione di Mono. Se abbiamo installato Mono # utilizzando il ns. package manager lasciamo il valore di default var.mono_dir = "/usr/" # se abbiamo installato Mono in una ns. cartella allora specifichiamo il percorso #var.mono_dir = "/home/username/mono-1.2.6/"  # la cartella dove l'utente lighttpd ha accesso in scrittura e lettura var.mono_shared_dir = "/tmp/" # se invece vogliamo utilizzare una cartella di un utente specifico #var.mono_shared_dir = "/home/username/lighttpd_scratch/"  # La path del motore fastcgi di Mono per ASP.NET 1.1 #var.mono_fastcgi_server = mono_dir + "bin/" + "fastcgi-mono-server" # La path del motore fastcgi di Mono per ASP.NET 2.0 var.mono_fastcgi_server = mono_dir + "bin/" + "fastcgi-mono-server2"  # La Path principale dell'applicazione # se corrisponde alla cartella predefinita di lighttpd var.mono_fcgi_root = server.document-root # altrimenti possiamo specificare una path differente #var.mono_fcgi_root = "/home/username/htdocs/"  # Specifichiamo quì la lista delle nostre directory virtuali e fisiche # per tutte le applicazioni che vogliamo implementare # directory virtuale e reale sono separate da un ':' ad esempio # cartella virtuale blog e cartella fisica ../myblog # /blog:../myblog var.mono_fcgi_applications = "/:."

 

Siamo pronti ad eseguire la nostra prima webapp asp.net copiando l’applicazione nella cartella principale di lighttpd.

link utili: http://www.mono-project.com/FastCGI_Lighttpd

 

Lascia il primo commento

Lascia un commento