Не может решить mod_wsgi исключение в установке Django

Я работаю со своим поставщиком услуг хостинга для подъема приложения Django и выполнения, но ни один из нас не очень опытен, и мы в основном поразили полный тупик.

У меня нет прямого доступа к conf файлу, но вот то, как его содержание было описано мне:

<IfModule mod_wsgi.c>
WSGIScriptAlias /fredapp/ /home/fred/public_html/cgi-bin/fredapp/apache/django.wsgi
WSGIDaemonProcess fred threads=15 display-name=%{GROUP} python-path=/home/fred/public_html/cgi-bin/fredapp/apache/
WSGIProcessGroup fred
WSGIApplicationGroup %{GLOBAL}
</IfModule>

Alias /robots.txt /home/fred/public_html/fred-site/robots.txt
Alias /favicon.ico /home/fred/public_html/fred-site/favicon.ico

Alias /settings/media/ /home/fred/public_html/fred-site/media/

Мой "django.wsgi" сценарий является ничем необычным:

import os, sys
sys.path.append('/home/fred/public_html/cgi-bin/')
sys.path.append('/home/fred/public_html/cgi-bin/fredapp/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'fredapp.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

Таким образом, мое понимание - то, что все это означает что, если запрос наталкивается на domain.com/fredapp/, что он должен быть передан в приложение через django.wsgi. Однако единственный ответ, который я получаю:

[Fri Jan 22 18:46:08 2010] [error] [client xx.xxx.xx.xx] File does not exist: /home/fred/public_html/domain.com/500.shtml
[Fri Jan 22 18:46:08 2010] [error] [client xx.xxx.xx.xx] mod_wsgi (pid=26760): Exception occurred processing WSGI script '/home/fred/public_html/cgi-bin/fredapp/apache/django.wsgi'.
[Fri Jan 22 18:46:03 2010] [error] [client xx.xxx.xx.xx] File does not exist: /home/fred/public_html/domain.com/404.shtml
[Fri Jan 22 18:46:03 2010] [error] [client xx.xxx.xx.xx] File does not exist: /home/fred/public_html/domain

Это работает под Apache на Linux. Я попытался выполнить каждую строку .wsgi сценария в интерпретаторе Python на сервере, и ни один из них не возвращает ошибок. Я также попробовал sys.stdout = sys.stderr обманите и стал не далее произведенным, чем, что выше. Файл не существует, ошибки имеют отношение к остальной части установки сайта и происходят по любому запросу. Я не закончил устанавливать все это правильно (ошибочные страницы и индексные страницы и так далее), потому что я просто пытаюсь заставить само приложение работать.

Я разбудил это приложение и работающий под Apache на моей собственной машине, хотя НЕ в режиме Daemon, но это - мое первое приложение Django, и я не думаю, что мой поставщик услуг хостинга когда-либо настраивал тот прежде, таким образом, мы летим немного слепой. Если бы у кого-либо есть какие-либо предложения, я был бы очень благодарен.Спасибо!

14
задан barsoomcore 23 January 2010 в 00:53
поделиться

3 ответа

Если цитируемая конфигурация о том, что вы используете, ошибка довольно очевидна на самом деле. У вас есть:

WSGIDaemonProcess fred threads=15 display-name=%{GROUP} python-path=/home/fred/public_html/cgi-bin/fredapp/apache/
WSGIProcessGroup scratchf

Это должно быть:

WSGIDaemonProcess fred threads=15 display-name=%{GROUP} python-path=/home/fred/public_html/cgi-bin/fredapp/apache/
WSGIProcessGroup fred

То есть имя группы процессов должно совпадать.

Вы должны увидеть сообщение об ошибке:

No WSGI daemon process called 'scratchf' has been configured

Это, скорее всего, будет до регистрации зарегистрированной ошибки:

Exception occurred processing WSGI script

именно поэтому важно, чтобы вы поставляете все сообщения журнала ошибок и не предполагаем, что они are т актуально.

В качестве альтернативы вы процитировали конфигурацию, отличную от того, что вы используете или не все конфигурации.


Обновление 1

Похоже, у вас может быть директива ErrorDocument включена в Apache для перенаправления ошибок к определенному URL. Поскольку, однако вы установили Django в корне веб-сервера и не исключали эти URL-адреса ошибок от передачи в Django, то когда сгенерирована ошибка Django, получает перенаправление для документа об ошибке, но он не может разрешить URL-адрес и впоследствии генерирует 404. Поскольку Apache видел 404 для перенаправления страницы ошибки, он возвращает страницу ошибки по умолчанию. Конечный результат заключается в том, что настоящая оригинальная ошибка и любая информация потеряна.

Таким образом, перейдите в конфигурацию Apache и прокомментируйте директивы errordocument.


Обновление 2

Измените конфигурацию для:

WSGIScriptAlias /fredapp /home/fred/public_html/cgi-bin/fredapp/apache/django.wsgi

У вас не должно иметь заднюю косулью на второе значение на линии. Пропустил, что вы на самом деле пытались установить на Sub URL и не в корне веб-сервера.

19
ответ дан 1 December 2019 в 13:09
поделиться

Возможно ли, чтобы ваш начальный каталог не является одним проектом?

Сегодня я также устанавливал приложение Apache + Mod_WSGI + Django и после добавления в django.wsgi:

 os.chdir('/home/user/my_django_project')

Все начало работать как очарование.

1
ответ дан 1 December 2019 в 13:09
поделиться

У нас была та же ошибка, когда пользователь работает Apache, не имел права читать файлы.

0
ответ дан 1 December 2019 в 13:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: