Introduction

Je pars du principe que Python, Apache et les outils de la chaîne de compilation, sont déjà installés. Par ailleurs les chemins qui sont indiqués sont ceux propres à ArchLinux, il est possible que pour d'autres distributions cela change. Les outils utilisés sont ceux proposés par toutes les distributions (ou presque ?), il ne devrait donc pas y avoir de changements à faire à ce niveau là.

Installation

Téléchargez les sources depuis le site du projet : http://code.google.com/p/modwsgi/downloads/list, il vous faudra la version 3.1 au minimum.

Décompressons tout ça : ~ $ tar -xvf mod_wsgi-3.1.tar.gz

Puis : ~ $ cd mod_wsgi

Il faut ensuite configurer mod_wsgi pour la compilation :

~/mod_wsgi $ ./configure --prefix=/usr --with-apxs=/usr/sbin/apxs --with-python=/usr/bin/python3

Les paramètres que je passe à ./configure me permette de lui indiquer où se situent les exécutables qu'il faudra utiliser. En particulier --with-python est très important car si je ne le spécifie pas mod_wsgi se contentera du programme python qui réside dans /usr/bin/ et qui est en fait Python 2.6, je doit donc le forcer à utiliser python3.

On lance la compilation : ~/mod_wsgi $ make

Puis l'installation (avec l'utilisateur root): ~/mod_wsgi # make install

Activation dans Apache

Configuration d'Apache

Il faut ensuite ajouter la ligne suivante au fichier de configuration d'Apache (/etc/httpd/conf/httpd.conf en ce qui me concerne) : LoadModule wsgi_module modules/mod_wsgi.so

Redémarrez Apache pour qu'il prenne en compte les changements : ~# /etc/rc.d/httpd restart Si une erreur se produit ici, c'est qu'il y a probablement une erreur dans le fichier de configuration, par exemple, que le module est mal installé. Le fichier log d'Apache devrait dans ce cas contenir un message d'erreur détaillé.

Test

Ajoutons encore quelques directives au fichier de configuration d'Apache. Ceci nous permettra de tester notre installation avec une petite application WSGI. Pour plus de détails sur la configuration d'Apache ou de mod_wsgi reportez vous à leur documentation respective. A la fin de celui-ci copier ce qui suit :

WSGIScriptAlias /wsgi_app /home/www/wsgi-scripts/wsgi_app.py
<Directory /home/www/wsgi-scripts>
    Order allow,deny
    Allow from all
</Directory>

Redémarrer à nouveau Apache.

Créer le dossier www/wsgi-scripts dans le répertoire /home et faite en sorte que l'utilisateur sous lequel Apache est lancé (par défaut il s'agit de http) puisse y accéder en lecture : ~ # cd /home /home # mkdir -p www/wsgi-scripts /home # chmod -R a+r www

Créer ensuite un fichier wsgi_app.py dans le dossier nouvellement créé, et copier-y ceci :

#-*- coding: utf-8 -*-
def wsgi_app(environ, start_response):
    import sys
    output = str(sys.version)
    status = '200 OK'
    headers = [('Content-type', 'text/plain'),
               ('Content-Length', str(len(output)))]
    start_response(status, headers)
    yield output

application = wsgi_app

Redémarrons encore une fois Apache afin d'être certain que tous les changements ont été pris en compte.

A présent, si vous naviguer jusqu'à l'adresse http://localhost/wsgi_app vous devriez voir s'afficher quelques lignes ressemblants à :

3.1.1 (r311:74480, Aug 27 2009, 04:56:37) 
[GCC 4.4.1]

L'important étant de bien avoir 3.1.x pour la version de Python.

Plus d'info :

Liens :

Documentation