Джанго на Apache с FCGI

Решено: К сожалению, мне не удалось решить проблему, но я начал заново и следовал Руководство по Django + FastCGI на вики "A Small Orange", и все работает как положено .

Я пытаюсь настроить Django с FCGI на Apache. План веб-хостинга, который я использую, — это план общего хостинга A Small Orange.

Django установлен, работает и может создавать таблицы базы данных, когда я запускаю команду syncdb. Если я запускаю manage.py runserver, а затем использую lynx для перехода к localhost:8080, django будет отображаться правильно. Однако просмотр django через Интернет невозможен, так как на странице отображается внутренняя ошибка сервера 500.

У меня установлен пакет flup python, и я использую python версии 2.6.

Ниже приведено содержимое моего файла .htaccess, расположенного в /public_html/:

RewriteEngine On
  RewriteBase /
  RewriteRule ^(media/.*)$ - [L]
  RewriteRule ^(admin_media/.*)$ - [L]
  RewriteRule ^(dispatch\.fcgi/.*)$ - [L]
  RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]

Ниже приводится содержимое моего файла dispatch.fcgi, который также находится в /public_html:

#!/usr/local/lib/python2.6
import sys
import os
os.chdir('/home/thegamer/django/projects/thegamer')
sys.path += ['/home/thegamer/django/django']
sys.path += ['/home/thegamer/django/projects']
from fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'thegamer.settings'
WSGIServer(WSGIHandler()).run()

person Peter Horne    schedule 08.11.2009    source источник
comment
А что пишет журнал ошибок?   -  person Cat Plus Plus    schedule 08.11.2009
comment
[Вс, 08 ноября, 11:52:42 2009] [предупреждение] FastCGI: (динамический) сервер /home/thegamer/public_html/dispatch.fcgi не смог продолжить работу в течение 30 секунд после 3 попыток, интервал перезапуска был уменьшен до 600 секунд   -  person Peter Horne    schedule 08.11.2009
comment
Что произойдет, если вы попытаетесь запустить dispatch.fcgi вручную? Если он работает, он должен просто ждать запросов. Если он завершается, это, вероятно, с сообщением, объясняющим, что пошло не так.   -  person Rasmus Kaj    schedule 08.11.2009
comment
Он выводит ожидаемый HTML-код. Я решил проблему, но, к сожалению, не совсем уверен, что вызвало проблему. Я постараюсь узнать и обновить, когда у меня есть. Спасибо за вашу помощь.   -  person Peter Horne    schedule 08.11.2009


Ответы (3)


Вы используете sqlite? Если это так, вам нужен абсолютный путь к файлу базы данных, а не относительный.

Если это не так, установите DEBUG=True в настройках и пусть django скажет вам, что это такое.

person Rasmus Kaj    schedule 08.11.2009
comment
Я использую mysql, и проблема не в моей базе данных. Проблема возникает где-то между получением запроса apache и его передачей django для обработки. Локальный запуск django работает нормально, поэтому ошибок не возникает. Запуск его через Интернет вызывает проблемы, и я не могу получить к нему доступ, чтобы просмотреть сообщения об ошибках. - person Peter Horne; 08.11.2009
comment
В качестве альтернативы можно использовать уведомление по электронной почте для получения информации об отладке, см. stackoverflow.com/questions/1648349/ - person luc; 08.11.2009
comment
Скорее всего, это какая-то разница в окружающей среде между запуском команды manage и apache, запускающим сервер, чем ошибка до достижения django (или, если ошибка до django, возможно, в журнале ошибок по умолчанию apache есть что-то полезное). Поэтому включите отладку (или электронную почту при ошибке, но тогда вам также нужно убедиться, что почта с сервера действительно может дойти до вас) и проверьте сообщение об ошибке. - person Rasmus Kaj; 08.11.2009
comment
(Игнорируйте предыдущее сообщение, не видел вашу цитату фактического сообщения об ошибке выше) - person Rasmus Kaj; 08.11.2009

Начиная снова и следуя руководству по Django + FastCGI на Вики "Маленький апельсин" привели к тому, что все заработало, как и ожидалось.

person Peter Horne    schedule 06.01.2010

У меня была точно такая же проблема. Это заняло некоторое время, но я наконец-то смог решить эту проблему с помощью ребят из службы поддержки A Small Orange (очень помогли!)

Вам нужно убедиться, что ваш dispatch.fcgi файл chmod изменен на 755. Все остальное (мой был 775) вызовет эту ошибку.

person Ben Hodgson    schedule 09.11.2010