Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/01/2018, à 10: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 hmm

/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, à 17:02)

Hors ligne

#2 Le 19/01/2018, à 10: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, à 10: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, à 10:58)

Hors ligne

#4 Le 19/01/2018, à 11: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, à 11: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 hmm

Hors ligne

#6 Le 20/01/2018, à 10: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, à 10: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, à 13: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 hmm

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é wink

Hors ligne