2011-05-13 6 views
1

J'ai essayé de configurer mod_wsgi pendant deux jours et toujours pas de chance. Voici ce que j'ai fait:Configurer mod_wsgi sur Mac OS X?

  • Créez un exemple de projet django mysite. Exécutez python manage.py runserver et assurez-vous qu'il fonctionne
  • Créer un répertoire apache sous mysite, créez apache_django_wsgi.conf, mysite.wsgi et un vide __init__.py

Contenu de apache_django_wsgi.conf:

WSGIPythonHome /usr/bin 
WSGIRestrictStdout Off 
WSGIDaemonProcess django 
WSGIProcessGroup django 

Alias /site_media/ "/Users/Garth/Dev/web-app/mysite/media/" 
<Directory "/Users/Garth/Dev/web-app/mysite/media"> 
Order allow,deny 
Options Indexes 
Allow from all 
IndexOptions FancyIndexing 
</Directory> 

Alias /media/ "/Library/Python/2.6/site-packages/django/contrib/admin/media/" 
<Directory "/Library/Python/2.6/site-packages/django/contrib/admin/media"> 
Order allow,deny 
Options Indexes 
Allow from all 
IndexOptions FancyIndexing 
</Directory> 

WSGIScriptAlias /mysite "/Users/Garth/Dev/web-app/mysite/apache/mysite.wsgi" 

<Directory "/Users/Garth/Dev/web-app/mysite/apache"> 
Allow from all 
</Directory> 

Contenu de mysite.wsgi

import os 
import sys 
sys.path.append('/Users/Garth/Dev/web-app/mysite') 
sys.path.append('/Users/Garth/Dev/web-app') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 
  • Télécharger mod_wsgi.so (binaire précompilé pour Mac OS X) et le mettre dans/usr/libexec/apache2
  • Modifier /etc/apache2/httpd.conf,
    ajouter:
    LoadModule wsgi_module libexec/apache2/mod_wsgi.so
    Include /Users/Garth/Dev/web-app/mysite/apache/apache_django_wsgi.conf
  • Run sudo apachectl -k start

Si je vais à localhost, je peux voir la liste des fichiers et répertoires. Mais si je vais à localhost/mysite (qui est le WSGIScriptAlias ​​que j'ai configuré), j'ai obtenu Internal Server Error.

Le error_log de apache est:

[Fri May 13 11:10:38 2011] [warn] Init: Session Cache is not configured [hint: SSLSessionCache] 
[Fri May 13 11:10:38 2011] [notice] Digest: generating secret for digest authentication ... 
[Fri May 13 11:10:38 2011] [notice] Digest: done 
[Fri May 13 11:10:38 2011] [notice] Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8l DAV/2 mod_wsgi/3.3 Python/2.6.1 configured -- resuming normal operations 
[Fri May 13 11:10:50 2011] [error] [client ::1] mod_wsgi (pid=10921): Target WSGI script '/Users/Garth/Dev/web-app/mysite/apache/mysite.wsgi' cannot be loaded as Python module. 
[Fri May 13 11:10:50 2011] [error] [client ::1] mod_wsgi (pid=10921): Exception occurred processing WSGI script '/Users/Garth/Dev/web-app/mysite/apache/mysite.wsgi'. 
[Fri May 13 11:10:50 2011] [error] Traceback (most recent call last): 
[Fri May 13 11:10:50 2011] [error] File "/Users/Garth/Dev/web-app/mysite/apache/mysite.wsgi", line 1, in <module> 
[Fri May 13 11:10:50 2011] [error]  import os 
[Fri May 13 11:10:50 2011] [error] ImportError: No module named os 

Quelqu'un voit où va mal? Le error_log semble en dire beaucoup. Je suis nouveau dans le développement web et j'ai peut-être commis des erreurs évidentes. Merci beaucoup!

Répondre

1

Ne pas définir WSGIPythonHome pour un démarrage, il n'est pas nécessaire. Il ne devrait être nécessaire dans certaines situations et ce n'est pas l'un d'entre eux.

Dans ce cas, vous avez défini une valeur incorrecte. De toute évidence, le fait que ce soit faux ne devrait pas avoir causé de problème car Python aurait dû retomber à l'aide de la valeur par défaut correcte, mais cela pourrait ne pas être le cas pour quelque raison que ce soit.

Vous pouvez également supprimer la ligne:

WSGIRestrictStdout Off 

que ce n'est pas nécessaire pour mod_wsgi 3.3.

+0

Cela fonctionne! Je vous remercie! – garthcn