Я работаю со своим поставщиком услуг хостинга для подъема приложения 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, и я не думаю, что мой поставщик услуг хостинга когда-либо настраивал тот прежде, таким образом, мы летим немного слепой. Если бы у кого-либо есть какие-либо предложения, я был бы очень благодарен.Спасибо!
Если цитируемая конфигурация о том, что вы используете, ошибка довольно очевидна на самом деле. У вас есть:
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 и не в корне веб-сервера.
Возможно ли, чтобы ваш начальный каталог не является одним проектом?
Сегодня я также устанавливал приложение Apache + Mod_WSGI + Django и после добавления в django.wsgi:
os.chdir('/home/user/my_django_project')
Все начало работать как очарование.
У нас была та же ошибка, когда пользователь работает Apache, не имел права читать файлы.