#1 Le 19/01/2018, à 09:07
- DavidTheDolphin
[Résolu] Python sur Lighttpd : scripts téléchargés et pas joués
Bonjour tout le monde,
J'ai une Raspbian stretch sur un Pi 0w sur laquelle j'ai installé lighttpd 1.4.45, PHP7.0-FPM et Python 2.7.13
Le souci c'est que lorsque le lance un script python depuis http://mondomaine.fr/cgi-bin/monscript.py le navigateur me propose de le télécharger au lieu d'être joué par le serveur...
J'ai lu des tonnes de messages disant que pour régler le problème il fallait s'assurer que cgi-bin soit à la racine du site, c'est le cas, et ajouter les 2 lignes suivantes à lighttp.conf :
server.modules += ( "mod_cgi" )
$HTTP["url"] =~ "^/cgi-bin/" { cgi.assign = ( ".py" => "/usr/bin/python" ) }
Hors c'est déjà mon cas
/etc/lighttpd/lighttpd.conf :
server.modules = (
# "mod_access",
"mod_alias",
# "mod_compress",
# "mod_redirect",
"mod_auth",
"mod_setenv",
"mod_cgi",
)
server.document-root = "/var/www/html"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
server.port = 80
alias.url = ( "/admin" => "/var/www/admin" )
dir-listing.activate = "enable"
auth.debug = 0
auth.backend = "plain"
auth.backend.plain.userfile = "/etc/lighttpd/pwd"
auth.require = ( "/admin/" =>
(
"method" => "basic",
"realm" => "Console d'administration",
"require" => "user=formateur"
)
)
$HTTP["url"] =~ "^/cgi-bin/" { cgi.assign = ( ".py" => "/usr/bin/python" ) }
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi", ".py" )
#compress.cache-dir = "/var/cache/lighttpd/compress/"
#compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
dir-listing.hide-dotfiles = "enable"
server.error-handler-404 = "/"
J'ai également vérifié que mes scripts appartiennent bien à www-data:www-data (comme l'ensemble de /var/www) et qu'ils soient exécutables.
Quelqu'un aurait une idée siouplait ? Parce que là je sèche...
Dernière modification par DavidTheDolphin (Le 22/01/2018, à 16:02)
Hors ligne
#2 Le 19/01/2018, à 09:35
- gl38
Re : [Résolu] Python sur Lighttpd : scripts téléchargés et pas joués
Dans la doc il est question du module fastcgi.
L'as-tu installé et mis en route ?
Cordialement,
Guy
Hors ligne
#3 Le 19/01/2018, à 09:56
- DavidTheDolphin
Re : [Résolu] Python sur Lighttpd : scripts téléchargés et pas joués
Oui il est installé mais le fastcgi c'est plutôt optimisé pour le php il me semble non ?
/etc/lighttpd/conf-enabled/10-fastcgi.conf :
# /usr/share/doc/lighttpd/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi
server.modules += ( "mod_fastcgi" )
/etc/lighttpd/conf-enabled/15-fastcgi-php.conf :
# -*- depends: fastcgi -*-
# /usr/share/doc/lighttpd/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi
## Start an FastCGI server for php (needs the php5-cgi package)
fastcgi.server += ( ".php" =>
((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",
"max-procs" => 1,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
))
)
Mes pages PHP sont exécutées correctement.
Dernière modification par DavidTheDolphin (Le 19/01/2018, à 09:58)
Hors ligne
#4 Le 19/01/2018, à 10:26
- gl38
Re : [Résolu] Python sur Lighttpd : scripts téléchargés et pas joués
J'ai lu trop vite et j'ai confondu php et python.
Il y a cette page qui a résolu le problème.
Cordialement,
Guy
Hors ligne
#5 Le 19/01/2018, à 10:33
- DavidTheDolphin
Re : [Résolu] Python sur Lighttpd : scripts téléchargés et pas joués
Merci de ton lien mais, comme tout ce que j'ai lu jusqu'ici, il s'agit d'ajouter les déclarations qui sont déjà présentes dans mon fichier de conf
Hors ligne
#6 Le 20/01/2018, à 09:04
- gl38
Re : [Résolu] Python sur Lighttpd : scripts téléchargés et pas joués
J'ai essayé avec mon apache, mon hello.py du dossier /var/www/html/statistiques
#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello World! This is my first CGI program</h2>'
print '</body>'
print '</html>'
n'a fonctionné qu'avec
AddHandler cgi-script .cgi .pl .py
<Directory "/var/www/html/statistiques">
Options +ExecCGI
</Directory>
dans le fichier de configuration d'apache.
Cordialement,
Guy
Hors ligne
#7 Le 22/01/2018, à 09:19
- DavidTheDolphin
Re : [Résolu] Python sur Lighttpd : scripts téléchargés et pas joués
Apache sur un pi zero W risque d'être trop gourmand, c'est pour ça que j'ai opté pour lighttpd.
Hors ligne
#8 Le 22/01/2018, à 12:21
- DavidTheDolphin
Re : [Résolu] Python sur Lighttpd : scripts téléchargés et pas joués
OK en fait c'était une erreur dans le script python lui-même
Fallait savoir qu'en cas d'erreur on n'a pas de retour particulier mais que le script devient téléchargeable au lieu d'être exécuté
Hors ligne