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 03/07/2020, à 23:32

zazaseti2020

Executer script python sur Apache2

Bonjour, j'essaye d'éxecuter un simple script python sur un serveur Ubuntu Apache2 en localhost mais le retour est nul.
Le script en question se nomme test.py et est stocké dans le dossier :  /var/www
Dans la bare URL je tape : http://localhost/test.py

Voici ma configuration :

Server version: Apache/2.4.29 (Ubuntu)
Python 3.6.9

Je précise que dans le fichier apache2.conf j'ai ajouté :
Exec CGI
AddHandler cgi-script .py

Voici le script que je cherche à éxecuter depuis le serveur :

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

print("Content-Type: text/html\n")

from math import sqrt
a = sqrt(4)
print(a)

Voici le rendu de la page web :

The requested URL was not found on this server.

Dernière modification par zazaseti2020 (Le 03/07/2020, à 23:40)

Hors ligne

#2 Le 04/07/2020, à 01:42

Vobul

Re : Executer script python sur Apache2

As-tu installé le module apache "cgi" ?

Il faut que tu postes ta config apache complète. (et puis un peu de lecture ne fait pas de mal).


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 04/07/2020, à 09:11

zazaseti2020

Re : Executer script python sur Apache2

Voici une partie du fichier apache2.conf :

<Directory />
	Options FollowSymLinks
	AllowOverride None
	Require all denied
</Directory>

<Directory /usr/share>
	AllowOverride None
	Require all granted
</Directory>

<Directory /var/www/>
	Options Indexes FollowSymLinks ExecCGI
    AddHandler cgi-script .cgi .py
	AllowOverride None
	Require all granted
</Directory>

#<Directory /srv/>
#	Options Indexes FollowSymLinks
#	AllowOverride None
#	Require all granted
#</Directory>

Dernière modification par zazaseti2020 (Le 04/07/2020, à 09:17)

Hors ligne

#4 Le 04/07/2020, à 09:37

bruno

Re : Executer script python sur Apache2

Bonjour,

Il est fortement déconseillé de modifier le fichier apache2.conf. La configuration doit se faire dans les hôtes virtuels sous /etc/apache2/sites-available. Voir la doc apache2

Donc dans ton fichier de configuration d'hôte virtuel, 000-default.conf si c'est celui que tu utilises, il faut quelque chose comme (à adapter) :

	<Directory /var/www/html>
            Options +ExecCGI
            AddHandler cgi-script .py
            Allowoverride all
            Require local
        </Directory>

Et il faut bien évidemment que le module cgi d'apache soit activé :

sudo a2enmod cgi

N.B. : il existe des solutions plus performantes pour exécuter des scripts python (mod wsgi, mod python, etc.)

Hors ligne

#5 Le 04/07/2020, à 14:33

zazaseti2020

Re : Executer script python sur Apache2

J'ai appliqué vos recommandations ça fonctionne. Par contre le module selenium semble ne pas être reconnu

En lançant le script via : http://127.0.0.1/cgi-bin/test.cgi

avec test.cgi :

#!/usr/bin/env python3

from selenium import webdriver
print("Content-type: text/html\n\n")
print("Hello World!\n")

driver = webdriver.Firefox()
url = 'https://www.coteur.com/cotes-foot.php'
driver.get(url)

url_links = []
for i in driver.find_elements_by_xpath('//a[contains(@href, "match/cotes-")]'):
    url_links.append(i.get_attribute('href'))

print(len(url_links), '\n')
print(url_links[0], '\n')

Dernière modification par zazaseti2020 (Le 04/07/2020, à 14:36)

Hors ligne

#6 Le 04/07/2020, à 15:28

bruno

Re : Executer script python sur Apache2

Ce n'est plus un problème de serveur mais de développement et programmation (voir la section du forum dédiée).
Il faut voir la doc de selenium (à adapter au contexte d'une utilisation sur Ubuntu), notamment les pré-requis et les paquets à installer.

Dernière modification par bruno (Le 04/07/2020, à 15:30)

Hors ligne