[afpy/django] Lot django, Vol 30, Parution 8

Nautile Bleu nautilebleu at gmail.com
Jeu 28 Mai 13:34:54 CEST 2009


Configuration django avec Apache

Bonjour,

Toujours dans le cadre de django-hg, je souhaite mettre en place une
authentification HTTP. Si j'ai bien compris, le serveur intégré ne
permet pas de faire de l'authentification HTTP, j'ai donc cherché à
paramétrer Apache pour qu'il serve django.

Comme désormais, c'est mod_wsgi qui est préconisé, je me suis tout
d'abord orienté vers cette option. Premier réflexe, installation via
macport, gestionnaire de packetage pour MacOSX que j'ai utilisé pour
installer Apache, Python, django, Postgres, etc.
Malheureusement, la dernière version disponible est une vieille 1.1
qui, en outre est configurée pour Python2.4 alors que django est
installé dans Python2.5.
J'ai donc cherché à installer mod_wsgi 2.5 depuis les sources.
L'installation échoue pour un problème d'architecture[1], similaire à
celui décrit dans le wiki, mais les tips pour contourner le problème
ne m'ont pas permis de le résoudre.

Je me suis donc rabattu sur mod_python, installé en version 3.3.1 via
macport. J'ai cependant deux petits soucis, qui n'empêchent pas le
projet de fonctionner, mais ça m'embête quand même:

* D'une part, pour que les liens soient correctement générés, j'ai dû
mettre dans le virtualhost comme option:

PythonOption django.root /../

Si je met juste un /, j'ai une erreur 'NoneType' object is not
iterable et je remarque que l'url est
http://django.eiledon.localhg/mozilla-1_9_1/rev/tip/build/autoconf/
(il manque le / entre local et hg)
Si je met deux //, les adresses sont incorrectes : /​/​hg/
mozilla-1_9_1/​detail/

Finalement /../ fonctionne mais ça ne me semble pas très propre, les
adresses étant de la forme /../hg/mozilla-1_9_1/detail/.


* D'autre part, j'ai dû changer le code des imports de settings. Afin
de rendre mon application réutilisable, j'importe les settings de
cette façon:

from django.conf import settings as global_settings
import settings

Ca marche très bien avec le serveur de développement, mais provoque
une erreur avec Apache.
Du coup, je dois faire

from django.conf import settings as global_settings
import mon_projet.settings

Mais alors, ce n'est plus portable…

Du coup, j'ai essayé avec
PythonOption django.root /test/

Les deux problèmes se règlent tout seul. Je ne comprend par contre
comment ça se fait que si je rentre juste l'adresse du serveur (sans
/test/) on arrive sur la page par défaut quand même…

Goulwen


[1] http://code.google.com/p/modwsgi/wiki/InstallationOnMacOSX


Plus d'informations sur la liste de diffusion django