Cette semaine nous avons mise-à-niveau notre équipement avec un nouveau PC qui roule Ubuntu 8.04 "the Hardy Heron". Nous avons encontrés certains problèmes lorsque nous avons déplacé nos sites web sous développement avec Mono ASP.Net.
Nous avons copié les entrées dans /etc/apache2/apache2.conf, et on s'attendait que tout fonctionne comme avans puisque nous avons installé toutes les dépendances avec synaptic (MySQL, Mono etc.). Mais par surprise nous avons reçu l'erreur suivante:
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache/2.2.8 (Ubuntu) mod_mono/1.2.5 Server at BasicTest Port 80
Nous avons inspecté le fichier log d'apache pour isoler la source de l'erreur:
vim /var/log/apache2/error.log
Le fichier présentair l'erreur suivante:
[Mon Sep 15 15:54:13 2008] [error] Failed running '/usr/lib/mono/2.0/mod-mono-server2.exe --filename /tmp/mod_mono_server_BasicTest --applications /:/home/developper/MonoDevelop Projects/BasicTest --nonstop --root /home/developper/MonoDevelop Projects/BasicTest (null) (null) (null) (null) (null)'. Reason: Exec format error
Nous avions jamais reçue une erreur du genre auparavent, donc nous avons cherché sur Google pour des indices. Certains gens disaient simplement d'elever le .exe de la fin dans la directive MonoPath dans un fichier de configuration Apache (plus d'information plus tard). Donc on l'a fait, et nous avons reçu l'erreur suivante:
[Mon Sep 15 16:24:31 2008] [error] Failed running '/usr/lib/mono/2.0/mod-mono-server2 --filename /tmp/mod_mono_server_BasicTest --applications /:/home/developper/MonoDevelop Projects/BasicTest/BasicTest --nonstop --root /home/developper/MonoDevelop Projects/BasicTest/BasicTest (null) (null) (null) (null) (null)'. Reason: No such file or directory
Elever le .exe sans réfléchir n'a pas résolu le problème, car l'éxécutable est en faite situé dans /usr/bin/. Donc, la section complète qu'on doit placer dans apache.conf pour une configuration fonctionnelle est la suivante:
<VirtualHost *:80>
ServerName BasicTest
DocumentRoot "/home/developper/MonoDevelop Projects/BasicTest/BasicTest"
MonoApplications BasicTest "/:/home/developper/MonoDevelop Projects/BasicTest/BasicTest"
MonoDocumentRootDir "/home/developper/MonoDevelop Projects/BasicTest/BasicTest"
MonoServerPath BasicTest /usr/bin/mod-mono-server2
MonoDebug true
<Location />
MonoSetServerAlias BasicTest
SetHandler mono
</Location>
ErrorLog /var/log/apache2/basictest.error.log
CustomLog /var/log/apache2/basictest.access.log combined
</VirtualHost>
La ligne importante est en gras. Maintenant, si vous avez une entrée dans votre fichier /etc/hosts, vous pouvez accéder le site local viahttp://BasicTest
J'espère que ce guide vous a été utilie, laissez-nous savoir.
Ceci ne s'applique pas à notre configuration, mais vous affecte peut-être, donc pour compléter nous alons l'inclure dans ce document. Dans votre mod_mono conf:
sudo vim /etc/apache2/mods-enabled/mod_mono.conf
Vous verrez deux lignes comme celle-ci:
#Include /etc/mono-server/mono-server-hosts.conf
Include /etc/mono-server2/mono-server2-hosts.conf
Si vous voulez utiliser Mono ASP.Net 2.0 (comme nous), la deuxième ligne devrait être dé-commenté. Maintenant éditez le fichier en question.
sudo vim /etc/mono-server2/mono-server2-hosts.conf
Et changez
MonoServerPath default /usr/lib/mono/2.0/mod-mono-server2.exe
pour
MonoServerPath default /usr/bin/mod-mono-server2