при настройке mod_wsgi для django 1.4 apache не запускается на mac osx после добавления WSGIPythonPath в конфигурацию виртуального хоста

Я следил за документацией django о том, как развернуть django 1.4 в apache, используя mod_wsgi https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/ на mac osx lion, и когда я добавляю директиву WSGIPythonPath, apache не может перезапуститься. Но без этого мое приложение не существует в пути. В журнале я получаю сообщение об ошибке

WSGIPythonPath не может встречаться в разделе VirtualHost

вот как выглядит моя конфигурация виртуального хоста

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/Users/jamo/code/work/projects/bfpd/fapp"
ServerName bfpd.dev
ServerAlias bfpd.dev
ErrorLog "/private/var/log/apache2/bfpd.dev-error_log"
CustomLog "/private/var/log/apache2/bfpd.dev-access_log" common
Alias /static/ /Users/jamo/code/work/projects/bfpd/fapp/fapp/static/
<Directory /Users/jamo/code/work/projects/bfpd/fapp/fapp/static>
  Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
IndexOptions FancyIndexing
</Directory>
WSGIScriptAlias / /Users/jamo/code/work/projects/bfpd/fapp/fapp/wsgi.py
WSGIPythonPath /Users/jamo/code/work/projects/bfpd/fapp/  
    <Directory /Users/jamo/code/work/projects/bfpd/fapp/fapp>
    Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>

   </VirtualHost>

Что я делаю неправильно ???


person James Muranga    schedule 08.06.2012    source источник
comment
исправлено WSGIPythonPath /Users/jamo/code/work/projects/bfpd/fapp/ должно быть в http.conf   -  person James Muranga    schedule 09.06.2012
comment
вы должны ответить на свой вопрос, а затем принять его через 2 дня, чтобы другие могли легко увидеть этот ответ. Рад, что ты разобрался! Я уверен, что это поможет кому-то в будущем.   -  person Yuji 'Tomita' Tomita    schedule 09.06.2012
comment
Что делать, если развертывание на общем сервере без доступа для записи к httpd, есть ли другие альтернативы?   -  person hobs    schedule 11.07.2012
comment
@hobs: Если у вас нет доступа к httpd.conf, но вы можете получить доступ к файлам vhost, используйте mod_wsgi в режиме демона: docs.djangoproject.com/en/1.4/howto/deployment/wsgi/modwsgi/   -  person hellsgate    schedule 02.11.2012


Ответы (2)


Я починил это. WSGIPythonPath /Users/jamo/code/work/projects/bfpd/fapp/ должно быть в http.conf

person James Muranga    schedule 29.08.2012
comment
Но как мне поступить, если у меня есть несколько приложений Django на одном сервере (каждое из которых определено в другом VirtualHost с другим URL-адресом)? - person Martin Trigaux; 14.11.2012
comment
На самом деле эта ошибка не появляется, пока вы определяете WSGIPythonPath вне узла VirtualHost. Это справедливо даже для стеков *nix. - person nemesisfixx; 20.02.2014
comment
@MartinTrigaux, в документах говорится: If multiple directories are specified they should be separated by a ':' if using a UNIX like system, or ';' if using Windows. If any part of a directory path contains a space character, the complete argument string to WSGIPythonPath must be quoted. - person nemesisfixx; 20.02.2014

Как упоминалось в комментарии nemesisfixx и указано в ошибке в вашем исходном вопросе:

WSGIPythonPath не может встречаться в разделе VirtualHost

Перемещение WSGIPythonPath за пределы VirtualHost разрешило сбой Apache на сервере OS X.

$ cat sites/0000_any_80_mysite.com.conf
WSGIPythonPath /Library/Server/Web/Data/Sites/mysite/django-app:/Users/owen/.virtualenvs/mysite:/Users/owen/.virtualenvs/mysite/lib/python2.7/site-packages

<VirtualHost *:80>
    ServerName mysite.com
    ServerAdmin [email protected]
    DocumentRoot "/Library/Server/Web/Data/Sites/mysite/site"
    ...
    WSGIScriptAlias /api /Library/Server/Web/Data/Sites/mysite/django-app/mysite/wsgi.wsgi
    ...
<VirtualHost>

Мне потребовалось много усилий, чтобы правильно указать пути (включая полный путь к site-env, который, как я изначально думал, будет включен автоматически после добавления верхнего уровня virtualenv).

person owenfi    schedule 14.08.2014