J'ai rencontré des problèmes lors du déploiement d'un projet Django - Review Board. J'ai fait ce que le document dit et j'ai eu des erreurs "Erreur 403" quand j'ai essayé de visiter le site. Peut-être que j'aurais dû poster cette question sur serverfault.com, mais je pense que cela peut aider les gens à écrire/déployer l'application Django en général.A propos du déploiement d'un projet Django sur Apache + mod_python
Voici l'installation:
J'ai installé la commission d'examen dans /data/www/reviewboard
:
. |-- conf | |-- apache-modpython.conf | |-- search-cron.conf | `-- settings_local.py |-- db | `-- reviewboard.db |-- htdocs | |-- errordocs -> /usr/lib/python2.6/site-packages/ReviewBoard-1.0.8-py2.6.egg/reviewboard/htdocs/errordocs | |-- media | | |-- admin -> /usr/lib/python2.6/site-packages/ReviewBoard-1.0.8-py2.6.egg/reviewboard/htdocs/media/admin | | |-- djblets -> /usr/lib/python2.6/site-packages/Djblets-0.6.2-py2.6.egg/djblets/media | | |-- rb -> /usr/lib/python2.6/site-packages/ReviewBoard-1.0.8-py2.6.egg/reviewboard/htdocs/media/rb | | `-- uploaded | | `-- images | `-- rb | |-- errordocs -> ../errordocs/ | `-- media -> ../media/ |-- logs `-- tmp
Tous les fichiers ont lu l'autorisation pour l'utilisateur httpd et la base de données et le répertoire uploaded
ont l'autorisation d'écriture pour l'utilisateur httpd .
Le contenu de conf/apache-modpython.conf
est:
<VirtualHost *:80>
ServerName A.B.C.edu
DocumentRoot "/data/www/reviewboard/htdocs"
# Error handlers
ErrorDocument 500 /errordocs/500.html
# Serve django pages
<Location "/rb">
PythonPath "['/data/www/reviewboard/conf'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
SetEnv PYTHON_EGG_CACHE "/data/www/reviewboard/tmp/egg_cache"
SetHandler mod_python
PythonHandler django.core.handlers.modpython
PythonAutoReload Off
PythonDebug Off
# Used to run multiple mod_python sites in the same apache
PythonInterpreter reviewboard_reviewboard
</Location>
# Serve static media without running it through mod_python
# (overrides the above)
<Location "/media">
SetHandler None
</Location>
<Location "/errordocs">
SetHandler None
</Location>
<Directory "/data/www/reviewboard/htdocs">
AllowOverride All
</Directory>
# Alias static media requests to filesystem
Alias /media /data/www/reviewboard/htdocs/media
Alias /errordocs /data/www/reviewboard/htdocs/errordocs
</VirtualHost>
Je cite également ce fichier dans le fichier de configuration Apache, /etc/httpd/conf/httpd.conf
comme ceci:
Include /data/www/reviewboard/conf/apache-modpython.conf
Quand j'ai essayé d'accéder au site par http://A.B.C.edu/rb
, j'ai eu erreur 403 et vu ce message dans le journal d'erreur httpd:
[Tue Jun 22 08:52:57 2010] [notice] Apache/2.2.11 (Mandriva Linux/PREFORK-10.1mdv2009.1) mod_python/3.3.1 Python/2.6.1 DAV/2 SVN/1.6.1 mod_ssl/2.2.11 OpenSSL/0.9.8k configured -- resuming normal operations [Tue Jun 22 08:53:30 2010] [error] [client X.X.X.X] client denied by server configuration: /data/www/reviewboard/htdocs/rb
Est-ce que quelqu'un sait ce que j'ai fait de mal? Merci d'avance!
Merci pour la réponse. J'ai ajouté ce que vous avez suggéré, mais j'ai toujours la même erreur dans le journal. Il semble que le httpd essaie d'accéder au répertoire "/ data/www/reviewboard/htdocs/rb", qui n'existe pas. Le fichier de configuration ne dit-il pas à httpd d'exécuter l'application Django au lieu d'accéder au système de fichiers simple? – evergreen
oh, je vois ce que tu veux dire. Apache ramasse ce répertoire au lieu de l'envoyer à mod_python. Ma réponse a été d'essayer d'aider à gérer le 403. J'utilise généralement mod_wsgi, donc j'ai peur que le problème de mod_python ne m'est pas immédiatement clair. – supersighs
Exactement. Des idées sur ce que j'ai mal fait avec mod_python? Le fichier de configuration a été généré automatiquement par le script "rb-site" de la Commission de révision. – evergreen