Pierre Porcheret




Voir la liste des articles



08 03 2016


Installation cgi-bin apache2

Pour la domotique, une des principale contrainte est de faire un code léger et rapide. Dans certain cas, le PHP est trop lourd et pas assez interconnecté au hardware.

Une solution est de passer par du python. Mais voila, le python n'est pas un langage web, et bien qu'il puisse etre utilisé pour générer du html, le navigateur ne le reconnais pas nativement.

Pour palier à cela, il faut installer le module CGI de apache, ce module permet l'exécution de script (shell, python, ruby...).

Installation du module CGI

Le module est déjà inclut dans apache (pour voir les modules disponibles voir le dossier /etc/apache2/mods-available) , il suffit de l'activer :

sudo a2enmod cgi

Et une relance d'apache pour qu'il  soit pris en compte :

sudo service apache2 restart

Par défaut, les scripts doivent être déposé dans le répertoire /usr/lib/cgi-bin/

Ce chemin est modifiable dans le fichier des hosts.

 

Pour modifier le fichier de configuration des hosts éditer le fichier /etc/apache2/sites-enabled/000-default.conf

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory "/usr/lib/cgi-bin">

   AddHandler cgi-script .py

   Options ExecCGI

</Directory>

 

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ : permet de donner le chemin (vous pouvez modifier celui ci par exemple /var/www/cgi-bin/)

AddHandler cgi-script .py : autoriser l'exécution des scripts de type python vous pouvez ajouter des extensions (.pl, .cgi , .sh....)

Options ExecCGI :  On autorise l'exécution.

Vous pouvez maintenant créer et déposer vos scripts dans le répertoire configuré. N'oubliez par par contre de préciser en entête de script, l'exécuteur du script :

exemple :

#!/usr/bin/perl

#!/usr/bin/python

#!/bin/bah

[...]

 

Exemple de script Hello World en python :

hello.py

#!/usr/bin/python

import cgi

print "Content-Type: text/html
"
print """<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Titre de la page en python</title>
    </head>
    <body>
        <h2>Hello World !</h2>
    </body>
</html>"""

Vous pouvez ensuite exécuter votre script via l'url http://<ip_serveur>/cgi-bin/hello.py


categorie :