Executer un script Python sur serveur apache2

Bonjour,

Dans le cadre d’un projet d’une machine cocktail, Je souhaite exécuter sur mon raspberry un programme python partir d’un lien sur interface web. Ça fait 3 jours que je cherche comment faire en vain.

j’ai suivi ce tuto:
http://tasdikrahman.me/2015/09/30/Running-CGI-Scripts-on-Apache2-Ubuntu/

Puis celui-ci:
https://www.tutorialspoint.com//python/python_cgi_programming.htm

Mais rien n’y fait je susi arrive a 3 resultats:

  • Élément Le premier il me propose de telechager le fichier.py

  • Élément Le second il m’affiche dans le navigateur le code python

  • Élément le 3eme ou il me dit : You don’t have permission to access « fichier.py » on this server

Pouvez vous m’aider SVP parce que la je « seche »

Je suis sous Apache/2.4.10 (Raspbian)

J’ai rendu mon "fichier.py executable via la commande chmod 755 fichier.py -x

Mon lien html se presente sous la forme suivante
>

  		<input type="hidden" name="name">
  		<input type="hidden" name="volume" value="8"><br>
  		<input type="submit" value="Valider" class="button light"/>
  	</form>

Mes fichiers serve-cgi-bin.conf et apache2.conf comportent le texte issue du premier tutorial

Je suis persuade que ca vient d’un probleme de configuration du serveur apache 2 mais ne maîtrisant pas tres bien ce sujet je m’en remet a vous.

Assez marrant de le faire comme ça
How to run a Python script in a web page - Stack Overflow ← pour t’aider

Je suis plus fan de le faire avec flask pour avoir un vrai environnement de dev web.

Bon après divers essais j’ai remis tout les fichier d’origine et j’ai juste modifier le fichier nommé 000-défault.conf ( situé dans etc/apache2/site-available)
et j’ai ajouter en dessous de DocumentRoot /var…

> <Directory /var/www/>
> Options ExecCGI Indexes FollowSymlinks Multiviews
> AllowOverride none
> Order allow,deny
> allow from all
> AddHandler cgi-script .py
> </Directory>

et j’ai créer un fichier python pour afficher 'une page HTML ( comme ci dessous) ça fonctionne

#!/usr/bin/python3


import RPi.GPIO as GPIO  # bibliothèque pour utiliser les GPIO
import time              # bibliothèque pour gestion du temps

print("Content-type:text/html\r\n\r\n")
print("<html><body>")
print("<h1> It's works!! </h1>")
for i in range(5):
        print("<h2> Hello world!"+str(i)+"</h2>")
print("</body></html>")

Par contre des que je met un code autre, qui fait appel à des sortie GPIO il se passe rien… alors que si je le lance par l’interface graphique ou pas bash ca fonctionne :’(

#!/usr/bin/python3


 import RPi.GPIO as GPIO  # bibliothèque pour utiliser les GPIO
GPIO.setmode(GPIO.BOARD)   # defini qu'on travail avec les numéro de pin et non de Pin ( = GPIO.setmode(GPIO,BOARD)
GPIO.setup(5,GPIO.OUT)  # la GPIO 3 réglée en sortie (output)
var = 1

# Boucle
while var < 5:
        GPIO.output(5,GPIO.HIGH)   # sortie au niveau logique haut (3.3 V)
        time.sleep(2)               # on ne change rien pendant 1 seconde
        print(var)
        var = var + 1
        GPIO.output(5,GPIO.LOW)    # sortie au niveau logique bas (0 V)
        time.sleep(2)               # on ne change rien pendant 1 seconde

GPIO.cleanup()

Attention, l’utilisation de GPIO demande d’être root. Or de base apache n’est pas root sur ta machine, et il faut mieux que cela reste ainsi. Tu peux mettre ton fichier en root et ajouter le setuid.

Bon je m’en sors pas… :cry:

J’ai le message d’erreur suivant :

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Et quand je vais dans le fichier error.log ( /var/log/apache2) je n’ai aucune erreur a date…