Настроить mod_wsgi на Mac OS X?

Я два дня пытаюсь настроить mod_wsgi, но все равно безуспешно. Вот что я сделал:

  • Создайте образец проекта django mysite. Запустите python manage.py runserver и убедитесь, что он работает
  • Создайте каталог apache в mysite, создайте apache_django_wsgi.conf, mysite.wsgi и пустой __init__.py

Содержимое 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> 

Содержание 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()
  • Загрузите mod_wsgi.so (предварительно скомпилированный двоичный файл для Mac OS X) и поместите его в / usr / libexec / apache2
  • Отредактируйте /etc/apache2/httpd.conf,
    добавьте:
    LoadModule wsgi_module libexec/apache2/mod_wsgi.so
    Include /Users/Garth/Dev/web-app/mysite/apache/apache_django_wsgi.conf
  • Беги sudo apachectl -k start

Если я перейду на localhost, я могу увидеть список файлов и каталогов. Но если я перейду на localhost / mysite (это WSGIScriptAlias, который я настроил), я получил Internal Server Error.

Error_log apache:

[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

Кто-нибудь видит, где идет не так? Error_log, кажется, о многом говорит. Я новичок в веб-разработке и, возможно, совершил несколько очевидных ошибок. Большое тебе спасибо!


person garthcn    schedule 13.05.2011    source источник


Ответы (1)


Не устанавливайте WSGIPythonHome для начала, это не нужно. Это должно быть необходимо только в определенных ситуациях, и это не одна из них.

В этом случае вы установили неправильное значение. По праву, факт, что это неправильно, не должен вызывать проблемы, поскольку Python должен был вернуться к использованию правильного значения по умолчанию, но по какой-то причине он может этого не делать.

Вы также можете удалить строку:

WSGIRestrictStdout Off

поскольку это не требуется для mod_wsgi 3.3.

person Graham Dumpleton    schedule 13.05.2011