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 07/05/2010, à 11:11

9h0ost

Mettre en place un serveur LAMPy

Bonjour à tous,

Je souhaite mettre en place un serveur LAMP avec Python comme langage de script (d'où LAMPy dans l'intitulé du sujet). Pour cela, j'ai installé les paquets libapache2-mod-python (apache2 et python étant des dépendances, ils sont également installés) et mysql-server.

Après avoir installé les paquets, j'ai tenté d'interprété du code Python sans rien configurer. Je m'attendais à ce que le paquet libapache2-mod-python configure apache pour permettre l'interprétation du code Python stocké dans un fichier .py. Cependant, lorsque j'ai tenté d'accéder à mon fichier helloword.py situé dans mon dossier /var/www via l'adresse http://localhost/helloword.py je me suis retrouvé avec un fichier téléchargeable.

En cherchant ici et là sur la toile, je suis tombé sur ce tutoriel, puis celui-ci, qui expliquent comment configurer apache pour faire le lien entre apache2 et le module python. J'ai testé et seule la solution ci-dessous fonctionne.

// Modification du fichier /etc/apache2/sites-available/default
...
<Directory /var/www/>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Order allow,deny
     allow from all
     AddHandler mod_python .py
     PythonHandler helloword.py
     PythonDebug On
</Directory>
...

Si je remplace PythonHandler helloword.py par PythonHandler mod_python.publisher je me retrouve avec une erreur 404 Not Found.

J'ai également tenté de suivre le conseil situé ici en créant un fichier python.conf dans le dossier /etc/apache2/mods-available et en créant un lien symbolique du même nom de fichier dans le dossier /etc/apache2/mods-enabled mais rien n'y fait. Je suis toujours avec une erreur 404 Not Found.

J'aimerais que tous les fichiers portant l'extension .py soient interprétés, pas uniquement le fichier helloword.py.

Quelqu'un a-t-il une petite idée? Un grand merci d'avance wink!

Hors ligne

#2 Le 07/05/2010, à 14:47

bejazzy

Re : Mettre en place un serveur LAMPy

Salut,

Je comptais faire la même chose que toi, sauf que je n'ai pas encore essayé de regarder un tel fichier avec mon navigateur. Je sais juste que le PHP fonctionne. Mais j'ai peut-être une idée, as-tu regardé si le fichier python.load était bien dans /etc/apache2/mod-available? Si ce n'est pas le cas, l'installation du paquet libapache2-mod-python s'est mal passée à mon avis.

S'il existe, et qu'il n'est pas dans /etc/apache2/mod-enabled, faire un

sudo a2enmod python

ou faire un lien symbolique du fichier python.load de mod-enabled vers mod-available.

cd /etc/apache2/mod-enabled
sudo ln -s ../mod-availabled/python.load

Si ce n'est pas ça...y'a certainement un autre truc à faire. Je chercherai.

Il faudrait quand même que je teste chez moi si Python ça marche avc Apache2, tout ça... Si ça fonctionne chez moi, je te le dis. Sinon, je suis preneur d'une (de la) solution ! tongue


Dell Inspiron 1525 - #!CrunchBang Linux 10 Statler Xfce --- #! FR

Hors ligne

#3 Le 07/05/2010, à 22:26

bejazzy

Re : Mettre en place un serveur LAMPy

Yep, j'ai trouvé une parade. Me demande pas trop pourquoi ça marche, mais ça marche.
Par défaut, tout ce que je développe (web ou non) se trouve dans un répertoire de mon HOME (et non directement dans /var/www/myproject par exemple).

(1) J'ai donc crée un 'helloworld.py' dans $HOME/src/web/pythontest/ avec

def index(req):
     return "Hello World !"

(2) Je fais un lien symbolique dans /var/www

cd /var/www
sudo ln -s ~/src/web/pythontest

(3) Je modifie le fichier /etc/apache2/site-available/default. Et au lieu de rajouter ce que les forums conseillent dans la balise <Directory /var/www/>, j'ai fait ça en-dessous avec une nouvelle balise 'Directory'.

<Directory /var/www/pythontest/>
     AddHandler mod_python .py
     PythonHandler mod_python.publisher
     PythonDebug On
</Directory>

(4) Un petit

sudo /etc/init.d/apache2 restart

(5) http://localhost/pythontest/helloworld.py
et ça marche !! wink
Néanmoins, y'a peut-être moyen de faire ça autrement.

Et puis c'est vrai que c'est un chouillat plus "propre" de faire ça dans un répertoire à part (où il y aurait que du code Python) et pas directement dans /var/www/. Perso, je souhiate faire du Apache + Python pour Django. En espérant que j'arrive à le faire fonctionner sur mon apache local et puis ensuite sur mon hébergeur...

En espérant que ça fonctionne chez toi. Bon courage.


Dell Inspiron 1525 - #!CrunchBang Linux 10 Statler Xfce --- #! FR

Hors ligne

#4 Le 10/05/2010, à 09:10

9h0ost

Re : Mettre en place un serveur LAMPy

Bonjour bejazzy et désolé d'avoir mis du temps à te répondre (un w-e chargé).

Finalement, tout fonctionne à merveille, y compris ta solution! J'ai certainement fait quelque chose de travers lors de mes premières tentatives.

Je récapitule mes opérations, notamment la manière décrite comme étant la plus propre sur cette page, afin que quelqu'un puisse en profiter.

Lors de l'installation du paquet libapache2-mod-python un fichier python.load est présent dans le dossier /etc/apache2/mods-available et un lien symbolique pointant vers ce fichier est présent dans le dossier /etc/apache2/mods-enabled. Ce fichier permet de charger le module python et contient:

LoadModule python_module /usr/lib/apache2/modules/mod_python.so

Il suffit de faire le lien entre apache2 et ce module (c'est là que je ne comprends pas pourquoi ça ne se fait pas automatiquement).

Deux solution s'offrent à nous:

1)  éditer le fichier de configuration d'apache2 (/etc/apache2/sites-available/default) en ajoutant dans la section <Directory /var/www/> (ou <Directory /var/www/espace_de_travail> si vous souhaitez que seuls les scripts en python situés dans le dossier espace_de_travail soient interprétés)

AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

pour avoir au minimum quelque chose comme

<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
		AddHandler mod_python .py
		PythonHandler mod_python.publisher
		PythonDebug On
</Directory>

2) créer un fichier de configuration python.conf dans le dossier /etc/apache2/mods-available 

sudo gedit /etc/apache2/mods-available/python.conf

ajouter dans ce nouveau fichier

<IfModule mod_python.c>
        AddHandler mod_python .py .psp
        PythonHandler mod_python.publisher | .py
        PythonHandler mod_python.psp | .psp
	PythonDebug On
</IfModule>

pour interpréter les fichiers .py et .psp, puis sauvegarder ce fichier de configuration.

Ensuite, faire un lien symbolique pointant vers ce fichier dans le dossier /etc/apache2/mods-enabled

sudo ln -s /etc/apache2/mods-available/python.conf /etc/apache2/mods-enabled/python.conf

Dans les deux cas, redémarrer le serveur apache2

sudo /etc/init.d/apache2 restart

J'ai opté pour la solution n°2 car il semble que c'est la manière dont est configuré apache2 pour PHP d'après les fichiers /etc/apache2/mods-available/php5.load et /etc/apache2/mods-available/php5.conf

Voilà, il ne reste plus qu'à enrichir la documentation Serveur web - LAMP avec une partie (ou page) consacrée à python.

Hors ligne

#5 Le 10/05/2010, à 15:49

bejazzy

Re : Mettre en place un serveur LAMPy

Félicitations pour cette trouvaille et ces explications précises.

Je te rejoins quant à préférer la solution numéro 2 puisqu'elle correspond à la configuration équivalente de PHP comme tu le soulignes par ailleurs.

Pour la page LAMP, on peut rajouter une section Python et faire un lien vers la page où tu as trouvé l'info + sur ce fil. Cela pourra aider un certains nombres de vaillant développeur web pythoniste !

Bonne continuation.


Dell Inspiron 1525 - #!CrunchBang Linux 10 Statler Xfce --- #! FR

Hors ligne