Настроить mod_wsgi в Mac OS X? - PullRequest
1 голос
/ 13 мая 2011

Я пытался настроить 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, кажется, говорит о многом. Я новичок в веб-разработке и, возможно, допустил некоторые очевидные ошибки. Большое спасибо!

1 Ответ

1 голос
/ 13 мая 2011

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

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

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

WSGIRestrictStdout Off

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

...