Come far funzionare Python con Lighttpd?


25

Ho installato Lighttpd sul mio Raspberry Pi, ma ora vorrei far funzionare il codice lato server. Ho familiarità con PHP, ma immagino che dovrei provare Python in quanto dovrebbe essere il linguaggio "go to" per il Raspberry Pi. Come posso ottenere Python gestendo il codice lato server tramite Lighttpd?


penzilla.net/tutorials/python/cgi il link è rotto ma grazie per l'ottimo writeup. Il mio Pi arriva domani!

Risposte:


16

Ciò di cui hai bisogno è il supporto CGI per lighttpd.

Apri il file di configurazione lighttpd ( /etc/lighttpd/lighttpd.conf ) e decommenta la riga "mod_cgi" (rimuovi il # dall'inizio della riga se ne esiste una) o aggiungi questa riga se non presente.

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

Aggiungi quanto segue in fondo al file:

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

Riavvia il demone lighttpd:

sudo service lighttpd force-reload

Quindi crea una directory cgi-bin nella directory principale del tuo server web. Tutti i file che terminano con .py in questa directory verranno elaborati da Python.

Ora puoi scrivere script Python per gestire le richieste web. Potresti voler leggere questo tutorial su come scrivere programmi CGI con Python .

Se d'altra parte si preferisce utilizzare un framework per gestire alcune delle basse dettagli di livello e migliorare la produttività degli sviluppatori, vi suggerisco di check-out web.py . Puoi installarlo usando apt:

sudo apt-get install python-webpy

Lucas al Blog Cloud 101 ha pubblicato un ottimo tutorial sulla scrittura di pagine Web usando il framework webpy.


È FastCGI o CGI?
Mark Ingram,

Si noti che il semplice CGI richiede l'avvio dell'interprete Python per ogni richiesta, quindi è adatto solo per la richiesta occasionale.
Thorbjørn Ravn Andersen,

Purtroppo questo ha funzionato solo parzialmente. Ora posso eseguire Python chiamando "http: // (IP) /cgi-bin/test.py?parameter=xxx" ma non "http: // (IP) /cgi-bin/test.cgi?parameter=xxx "- il successivo dà un errore 404 ...
576i

@ 576i Prova a cambiare questa riga cgi.assign = (".py" => "/ usr / bin / python") in cgi.assign = (".cgi" => "/ usr / bin / python")
Steve Robillard

1
@ 576i Invece di continuare questa discussione nei commenti di un'altra domanda, per favore apri una nuova domanda e includi cosa funziona e cosa hai provato. Quindi eliminerò questi commenti. A proposito, qualsiasi motivo per cui non puoi semplicemente andare con l'estensione .py, che hai detto che funziona?
Steve Robillard,

3

La risposta accettata non ha funzionato per me e ignora anche i pacchetti preconfigurati disponibili per Lighttpd.

Il modo corretto di installare Python su Lighttpd per Raspberry è:

Per prima cosa abilitare cgi da

sudo lighttpd-enable-mod cgi

Questo crea un nuovo file di configurazione per Lighttpd:

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

Modifica il file di configurazione nano /etc/lighttpd/conf-enabled/10-cgi.conf, per assomigliare a questo

server.modules += ( "mod_cgi" )

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

Assicurati che python 2 sia installato eseguendo:

/usr/bin/python --version

Ora riavvia

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

In bocca al lupo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.