Le Raspberry Pi devient un serveur ASP.NET

Après le PHP pour WordPress et Joomla, il est temps de passer à une technologie un peu plus exotique sur notre petite machine : un serveur ASP .NET

asp-0

Pour ce tutoriel, je suis passé sous Raspbian. Pas moyen d’y arriver sous ArchLinux avec l’absence de certains paquets.

  1. Installer un serveur Web. Je reste sur mon préféré : Nginx
     sudo apt-get install nginx
  2. Installer le wrapper FastCGI pour mono
     sudo apt-get install mono-fastcgi-server4
  3. Configurer un serveur dans Nginx
    1. Créer un fichier /etc/nginx/sites-available/asp avec le contenu suivant :
      server {
      
       listen 8080;
      
       server_name localhost;
      
       access_log /var/log/nginx/asp.access.log;
      
       error_log /var/log/nginx/asp.error.log;
      
          location / {
      
            root /var/www/asp/;
      
            index index.html index.htm default.aspx Default.aspx;
      
            fastcgi_index Default.aspx;
      
            fastcgi_pass 127.0.0.1:9000;
      
            include /etc/nginx/fastcgi_params;
      
           }
      
       }

      A vous de modifier le fichier pour vos préférences comme le numéro du port, la localisation des fichiers, les logs, etc.

    2. Modifier le fichier /etc/nginx/fastcgi_params en y ajoutant les deux lignes suivantes :
      fastcgi_param PATH_INFO "";
      
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    3. Redémarrer le serveur Nginx
      sudo /etc/init.d/nginx restart
  4. Créer un fichier Default.aspx dans le répertoire par défaut du serveur (/var/www/asp dans mon exemple). Le contenu est :
    <%
    
     HelloWorldLabel.Text = "Hello, world!!!!";
    
    %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    
    <head runat="server">
    
     <title>Pi Home Server - Exemple ASP</title>
    
    </head>
    
    <body>
    
     <form id="form1" runat="server">
    
     <div>
    
     <asp:Label runat="server" id="HelloWorldLabel"></asp:Label>
    
     </div>
    
     </form>
    
    </body>
    
    </html>
  5. Créer un fichier de gestion du site à la racine : /var/www/asp/web.config
    <!-- Web.Config Configuration File -->
    
    <configuration>
    
     <system.web>
    
    <customErrors mode="Off"/>
    
     </system.web>
    
    </configuration>
  6. Reste à démarrer le wrapper FastCGI
    sudo fastcgi-mono-server4 /applications=/:/var/www/asp/ /socket=tcp:127.0.0.1:9000

    N’oubliez pas de modifier la ligne si vous avez changé le répertoire du site

Voici le résultat à l’adresse http://<ip du raspberry pi>:<port de votre config>/

ASP-1

A bientôt !

Vous aimerez aussi...

  • Salut, pourrais tu nous expliquer à quoi sert un serveur ASP.net ?

    • Salut,
      Sans rentrer dans les détails, l’idée ici est de pouvoir développer un site avec autre chose que du PHP. La technologie Microsoft offre d’autres possibilités (je veux pas comparer les deux) et elle a ses adeptes. Certains trouvent que c’est plus performant que le PHP, d’autres trop complexes. Bref, c’est l’occasion de se faire sa propre idée.
      Voilà 🙂

  • mickael

    bonjour,

    J’ai un petit souci !!!

    la commande ne fonctionne plus.

    sudo fastcgi-mono-server4 /applications=/:/var/www/asp/ /socket=tcp:127.0.0.1:9000

    fastcgi-mono-server4 –version

    fastcgi-mono-server4.exe 2.10.0.0

    (c) 2007 Brian Nickel

    FastCGI Backend for XSP

    • Bonjour,
      Sans plus d’explication les personnes qui suivent l’article auront du mal à aider. Quelle distro ? Quel config ? Quel message ? etc.

  • nass06

    Bonjour, merci pour le tuto, j’ai suivi sous la dernière raspbmc sur un rasp modèle B et là je bloque à la partie 6 je n’ai aucune réponse sur le terminal, je lance la commande et plus rien.

    J’ai modifié le dossier et le port, peux-être un problème de droit? Je m’y connais pas trop en linux je développe sous environnement microsoft principalement.

    J’ai installé avant ça mono-runtime et mono-mcs, peux-être une incompatibilité?

    Merci.

    • Chris

      Salut. Peut être effectivement, il y a peut etre conflit. As tu essayé de créer un fichier index.html et voir si ca s’affiche ? Pour faire la différence entre une erreur Nginx ou ASP

  • nass06

    J’ai désinstallé mono mais tj la même.
    Bein je peux même pas tester puisque je peux pas accéder à l’adresse web du site, ce qui me fait penser à un pb sur cette commande sudo fastcgi-mono-server4.
    Lorsque je l’exécute seule sans » /application… » j’ai cette erreur : » Error: Pipe socket is not bound. ».
    mickael juste au dessus avait aussi se problème. Je vais continuer à chercher.

    • Si tu trouves une solution n’hésites pas à partager. Utilise aussi les log nginx qui peuvent donner des pistes sur des problèmes de port ou de droits etc.

  • Menno

    With this solution you get DateTime not working. It’s a bug of the hardfloating version of Raspbian.
    The softfloating version is having a bug with apt-get which is not installing mono correctly.

    Avec cette solution, vous êtes DateTime ne fonctionne pas. Il s’agit d’un bug de la version hardfloating de Raspbian.
    La version softfloating a un bug avec apt-get qui n’est pas mono installe correctement.

  • Tib

    Bonjour,

    J’ai suivi le tuto à la lettre, tout va bien, mais j’aimerai afficher le nom du fichier + son extension dans l’URL. Actuellement, lorsque je tape l’adresse de mon serveur dans la barre de recherche, il me renvoie bien vers Default.aspx mais ne m’affiche pas le nom de ce fichier dans l’URL.
    Comment peut-on faire?
    Je cherche depuis un petit moment mais ne parviens pas à trouver de solution :/

    Merci!

  • Julien L

    Bonjour, j’ajoute un commentaire 2 ans plus tard pour ceux comme moi qui sont arrivés là.
    La commande :
    sudo fastcgi-mono-server4 /applications=/:/var/www/asp/ /socket=tcp:127.0.0.1:9000
    …ne donnait rien chez moi.

    C’est parce qu’il manquait un lien symbolique à créer dans le dossier : /etc/nginx/sites-enabled
    Il faut créer un lien « asp » vers le fichier « asp » créé dans l’autre dossier /etc/nginx/sites-available

    Comme ceci : (à executer dans le dossier « site-enabled »)
    sudo ln -s /etc/nginx/sites-available/asp asp

    Maintenant j’ai une erreur .NET, mais c’est mieux qu’avant 🙂
    A suivre…

  • Julien L

    Et hop, grâce à ce site :
    https://bugzilla.xamarin.com/show_bug.cgi?id=17269

    J’ai ajouté :

    En première ligne de la page Default.aspx
    Ca, plus ma modification précédente avec les liens symboliques et là banco, mon premier Hello world sous mono… 😉

    Il n’y a plus qu’à coder maintenant !
    Merci à l’auteur en tout cas.

  • Niko Hallikainen

    Hi, I get this error:

    pi@raspberrypi:/etc/apache2/sites-available $ sudo apt-get install nginx

    Luetaan pakettiluetteloita… Valmis

    Muodostetaan riippuvuussuhteiden puu

    Luetaan tilatiedot… Valmis

    nginx on jo uusin versio.

    0 päivitetty, 0 uutta asennusta, 0 poistettavaa ja 60 päivittämätöntä.

    2 ei asennettu kokonaan tai poistettiin.

    Toiminnon jälkeen käytetään 0 t lisää levytilaa.

    Haluatko jatkaa? [K/e] k

    Setting up nginx-light (1.6.2-5+deb8u1) …

    Job for nginx.service failed. See ‘systemctl status nginx.service’ and ‘journalctl -xn’ for details.

    invoke-rc.d: initscript nginx, action « start » failed.

    dpkg: error processing package nginx-light (–configure):

    subprocess installed post-installation script returned error exit status 1

    dpkg: dependency problems prevent configuration of nginx:
    nginx depends on nginx-full (>= 1.6.2-5+deb8u1) | nginx-light (>= 1.6.2-5+deb8u1) | nginx-extras (>= 1.6.2-5+deb8u1); however:
    Package nginx-full is not installed.
    Package nginx-light is not configured yet.
    Package nginx-extras is not installed.
    nginx depends on nginx-full (<< 1.6.2-5+deb8u1.1~) | nginx-light (<< 1.6.2-5+deb8u1.1~) | nginx-extras (<< 1.6.2-5+deb8u1.1~); however:
    Package nginx-full is not installed.
    Package nginx-light is not configured yet.
    Package nginx-extras is not installed.
    dpkg: error processing package nginx (–configure):
    dependency problems – leaving unconfigured
    Errors were encountered while processing:
    nginx-light
    nginx
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    So, how I can fix this?

    Br, Niko H.

    • Hi,
      Not sure to get all but it seems that the system need nginx-full. Can you please try to install it (apt-get install nginx-full) ?

      • Niko Hallikainen

        I try but I get same error:

        pi@raspberrypi:/etc/apache2/sites-available $ sudo apt-get install nginx-full

        Reading package lists… Done

        Building dependency tree

        Reading state information… Done

        nginx-full is already the newest version.

        0 upgraded, 0 newly installed, 0 to remove and 60 not upgraded.

        2 not fully installed or removed.

        After this operation, 0 B of additional disk space will be used.

        Do you want to continue? [Y/n] y

        perl: warning: Setting locale failed.

        perl: warning: Please check that your locale settings:

        LANGUAGE = (unset),

        LC_ALL = (unset),

        LANG = « fi_FI.UTF-8 »

        are supported and installed on your system.

        perl: warning: Falling back to the standard locale (« C »).

        locale: Cannot set LC_CTYPE to default locale: No such file or directory

        locale: Cannot set LC_MESSAGES to default locale: No such file or directory

        locale: Cannot set LC_ALL to default locale: No such file or directory

        Setting up nginx-full (1.6.2-5+deb8u1) …

        Job for nginx.service failed. See ‘systemctl status nginx.service’ and ‘journalctl -xn’ for details.

        invoke-rc.d: initscript nginx, action « start » failed.

        dpkg: error processing package nginx-full (–configure):

        subprocess installed post-installation script returned error exit status 1

        dpkg: dependency problems prevent configuration of nginx:

        nginx depends on nginx-full (>= 1.6.2-5+deb8u1) | nginx-light (>= 1.6.2-5+deb8u1) | nginx-extras (>= 1.6.2-5+deb8u1); however:

        Package nginx-full is not configured yet.

        Package nginx-light is not installed.

        Package nginx-extras is not installed.

        nginx depends on nginx-full (<< 1.6.2-5+deb8u1.1~) | nginx-light (<< 1.6.2-5+deb8u1.1~) | nginx-extras (<< 1.6.2-5+deb8u1.1~); however:

        Package nginx-full is not configured yet.

        Package nginx-light is not installed.

        Package nginx-extras is not installed.

        dpkg: error processing package nginx (–configure):

        dependency problems – leaving unconfigured

        Errors were encountered while processing:

        nginx-full

        nginx

        E: Sub-process /usr/bin/dpkg returned an error code (1)

        pi@raspberrypi:/etc/apache2/sites-available $

        • Niko Hallikainen

          Can I run asp.net without nginx?

          • I never tried but if you can use a wrapper for mono with Apache … But i don’t think you can do something without a web server

          • Niko Hallikainen

            I have something wrong in my raspberry:

            E: Could not open lock file /var/lib/dpkg/lock – open (13: Permission denied)
            E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

            I run that command with sudo

          • Try
            sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
            Then
            sudo apt-get –reinstall install nginx

        • Try to run the suggested commands :
          systemctl status nginx.service
          then
          journalctl -xn
          You should get details

          • Niko Hallikainen

            I get this:

            pi@raspberrypi:/var/www/html/test $ systemctl status nginx.service

            â nginx.service – A high performance web server and a reverse proxy server

            Loaded: loaded (/lib/systemd/system/nginx.service; enabled)

            Active: failed (Result: exit-code) since Tue 2016-04-12 17:12:19 UTC; 1h 26min ago

            Process: 27622 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

            Process: 27619 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

            pi@raspberrypi:/var/www/html/test $ journalctl -xn

            No journal files were found.

            pi@raspberrypi:/var/www/html/test $

          • Strange as it says that nginx is already installed : « nginx-full is already the newest version »

            Also you should upgrade your system. Maybe it could help :
            apt-get update && apt-get upgrade && apt-get dist-upgrade

            Then
            apt-get –reinstall install nginx

  • Dnyanesh Patil

    hello sir, nice work. I have tried this project. on raspi3 with noobs.
    I reach upto step 3: sudo /etc/init.d/nginx restart and got msg OK.
    Now I have designed web in VIsual Studo15. copied it to folder asp.
    but when i execute command « sudo fastcgi-mono-server4 applications = /:/var/www/asp / /socket = tcp:127.0.0.1:9000 » consol on raspberyypi tooks too much time .infact it didnt get back. i have to close consol and start again. whats wrong?
    i created aspx page following your step 4 and 5. but same problem. please help.

Support Me !: Hi! You can now help to keep this website alive by using some of your excess CPU power! You can stop if you need! Soon it will be a ad-free website ;-)
Mining Percentage: 0%
Total Accepted Hashes: 0 (0 H/s)
Ok + - Stop