Comment faire fonctionner Python avec Lighttpd?


25

J'ai installé Lighttpd sur mon Raspberry Pi, mais j'aimerais que le code côté serveur fonctionne maintenant. Je connais PHP, mais je pense que je devrais essayer Python car il est censé être le langage "go to" pour le Raspberry Pi. Comment puis-je obtenir Python en gérant le code côté serveur via Lighttpd?


Le lien penzilla.net/tutorials/python/cgi est rompu mais merci pour l'excellente rédaction. Mon Pi arrive demain!

Réponses:


16

Ce dont vous avez besoin est un support CGI pour lighttpd.

Ouvrez le fichier de configuration lighttpd ( /etc/lighttpd/lighttpd.conf ) et décommentez la ligne "mod_cgi" (supprimez le # du début de la ligne s'il en existe un) ou ajoutez cette ligne si elle n'est pas présente.

server.modules = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_auth",
            "mod_ssi",
            "mod_cgi",
            "mod_compress",
            "mod_fastcgi",
            "mod_rewrite",
            "mod_magnet",
)

Ajoutez ce qui suit au bas du fichier:

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( ".py" => "/usr/bin/python" )
}

Redémarrez le démon lighttpd:

sudo service lighttpd force-reload

Créez ensuite un répertoire cgi-bin sous le répertoire racine de votre serveur Web. Tous les fichiers se terminant par .py dans ce répertoire seront traités par Python.

Vous pouvez désormais écrire des scripts Python pour gérer les requêtes Web. Vous voudrez peut-être lire ce tutoriel sur l' écriture de programmes CGI avec Python .

Si d'autre part vous préférez utiliser un cadre pour gérer certains des détails de bas niveau et d' améliorer la productivité des développeurs, je vous suggère de vérifier web.py . Vous pouvez l'installer en utilisant apt:

sudo apt-get install python-webpy

Lucas sur le blog Cloud 101 a publié un excellent tutoriel sur l'écriture de pages Web à l'aide du cadre webpy.


Est-ce FastCGI ou CGI?
Mark Ingram

Notez que le CGI ordinaire nécessite de démarrer l'interpréteur python pour chaque demande, il n'est donc bien adapté qu'à la demande occasionnelle.
Thorbjørn Ravn Andersen

Hélas, cela n'a fonctionné que partiellement. Je peux maintenant exécuter python en appelant "http: // (IP) /cgi-bin/test.py?parameter=xxx" mais pas "http: // (IP) /cgi-bin/test.cgi?parameter=xxx "- le dernier donne une erreur 404 ...
576i

@ 576i Essayez de changer cette ligne cgi.assign = (".py" => "/ usr / bin / python") en cgi.assign = (".cgi" => "/ usr / bin / python")
Steve Robillard

1
@ 576i Plutôt que de poursuivre cette discussion dans les commentaires d'une autre question, veuillez ouvrir une nouvelle question et inclure ce qui fonctionne et ce que vous avez essayé. Je supprimerai ensuite ces commentaires. BTW aucune raison pour laquelle vous ne pouvez pas simplement utiliser l'extension .py, qui, selon vous, fonctionne?
Steve Robillard

3

La réponse acceptée n'a pas fonctionné pour moi et elle ignore également les packages préconfigurés disponibles pour Lighttpd.

La bonne façon d'installer Python sur Lighttpd pour Raspberry est:

Activez d'abord cgi par

sudo lighttpd-enable-mod cgi

Cela crée un nouveau fichier de configuration pour Lighttpd:

/etc/lighttpd/conf-enabled/10-cgi.conf

Modifiez le fichier de configuration nano /etc/lighttpd/conf-enabled/10-cgi.confpour qu'il ressemble à ceci

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        alias.url += ( "/cgi-bin/" => "/var/www/cgi-bin" )
        cgi.assign = (
                ".py"  => "/usr/bin/python",
        )
}

Assurez-vous que python 2 est installé en exécutant:

/usr/bin/python --version

Maintenant, redémarrez

sudo /etc/init.d/lighttpd force-reload

Bonne chance!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.