Pre-Requisiti
Il sistema di riferimento è SUSE Linux (sia OpenSUSE che SLED o SLES)
Apache 2.2
Nota: Il servizio si chiama apache2, per gestire il servizio usare: service apache2 {start|stop|restart}
Installare i pacchetti di Mono (scaricabili tramite YaST2 *), in particolare controllare di aver incluso nell’installazione:
xsp
mono-core
mono-web
Una volta installato Mono il caricamento di mod_mono.conf (il file di configurazione di mod_mono, plug-in per ASP.Net di Apache) dovrebbe avvenire automaticamente in quanto il file si trova nella directory “/etc/apache2/conf.d”
Per verificare l’esecuzione di mono all’avvio: ps –A e dovrebbe mostrare i processi http2 (o http2-prefork) e mono.
Configurazione del server
E’ buona norma tenere la configurazione custom del server in un file separato, di solito “/etc/apache2/httpd.conf.local”
Per far si che Apache carichi anche questo file di configurazione la procedura corretta è intervenire nel file “/etc/sysconfig/apache2” come suggerito in httpd.conf
# Note: instead of adding your own configuration here, consider
# adding it in your own file (/etc/apache2/httpd.conf.local)
# putting its name into APACHE_CONF_INCLUDE_FILES in
# /etc/sysconfig/apache2 -- this will make system updates
# easier :)
APACHE_CONF_INCLUDE_FILES="/etc/apache2/httpd.conf.local"
Nota:
NON intervenire nel file “/etc/apache2/sysconfig.d/include.conf” perché è quello utilizzato dalla variabile APACHE_CONF_INCLUDE_FILES e ogni volta viene sovrascritto
# The file below is generated from /etc/sysconfig/apache2,
# include arbitrary files as named in APACHE_CONF_INCLUDE_FILES and
# APACHE_CONF_INCLUDE_DIRS
Include /etc/apache2/sysconfig.d/include.conf
NON modificare nemmeno il file “/etc/apache2/httpd.conf.local”
File di configurazione del server
Esempio di host
#Set the server for ASP.Net 1.x and ASP.Net 2.0
MonoServerPath fw1Server "/usr/bin/mod-mono-server"
MonoServerPath fw2Server "/usr/bin/mod-mono-server2"
#Define the applications
Alias /myApp "/srv/www/htdocs/myApplication"
AddMonoApplications fw2Server "/myApp:/srv/www/htdocs/myApplication"
MonoSetEnv fw2Server MONO_IOMAP=all
<Location /myApp>
Allow from all
MonoSetServerAlias fw2Server
SetHandler mono
Order allow,deny
</Location>
# enabling mod_mono console control "http://localhost/mono" – only from localhost
<Location /mono>
SetHandler mono-ctrl
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
MonoServerPath:
Serve per mappare i server. In questo file sono presenti due server, uno che utilizza il framework 1 e una che utilizza il framework 2
Possono essercene anche altri e le singole applicazioni possono utilizzare server diversi (che possono tra l’altro essere gestiti singolarmente), concetto molto simile all’Application Pool di IIS.
AddMonoApplications:
Consente di aggiungere diverse applicazioni che possono girare o meno nello stesso server mod_mono
È possibile utilizzarlo per avere file diversi di configurazione specificando un solo parametro (nel qual caso viene preso il server mod_mono di default che solitamente è la versione 1 del framework) oppure specificando anche il nome del server mod mono da usare (qui nominati fw1 e fw2) nel qual caso utilizza il server (e di conseguenza il framework) specificato.
Questo consente di tenere distinti i processi (security), di tenere distinti gli oggetti Session e Application, di impostare valori differenti per utilizzo di cpu e altro.
Esempio di host su porta non di default
Listen 8110
<VirtualHost *:8110>
MonoServerPath default /usr/bin/mod-mono-server2
Alias /MonoRoot /srv/www/monoroot
AddMonoApplications default "/MonoRoot:/srv/www/monoroot"
MonoMaxActiveRequests 3
MonoMaxWaitingRequests 3
MonoSetEnv MONO_THREADS_PER_CPU=2000
<Location /MonoRoot>
MonoSetServerAlias default
SetHandler mono
Allow from all
</Location>
</VirtualHost>
Oltre alla porta non di default qui è sono specificati anche il numero massimo di richieste attive e di richieste in attesa oltre che al numero di threads.
*YasT2:
Per aggiungere un repository:
Nel “Control Center” di YasT, “Show Administrator Settings” e nella sezione “Software” cliccare su “Software Repositories”
Quindi “Add”, “HTTP…” e aggiungere il repository corretto per la propria versione di OpenSUSE (lo si può trovare in http://www.go-mono.com/mono-downloads/download.html)
Per una spiegazione completa su come configurare i repositories di YAsT:
http://en.opensuse.org/Add_Package_Repositories_to_YaST
P.S. Grazie ad Umberto (Bubi) per avermi fornito gran parte di questa guida