CherryPy (или другая платформа Python) с FastCGI на общем хосте

StackOverflow https://stackoverflow.com/questions/1665742

Вопрос

Я пытаюсь настроить мини-фреймворк Python CherryPy с помощью FastCGI (на самом деле fcgid) на Apache.Я использую общий хост, поэтому у меня нет доступа к httpd.conf, только htaccess.Я следовал этим урокам, но безрезультатно:

Я продолжаю получать 500 ошибок в журналах Apache, в которых говорится: «Преждевременное завершение заголовков сценариев».Я перепробовал все (разрешения/шебанги/полные пути/деамонизированные/недеамонизированные).Я знаю, что Apache правильно выполняет мой .fcgi, потому что я могу печатать журнал ошибок из Python, но это все.Кто-нибудь раньше успешно устанавливал CherryPy или любую другую платформу на общий хост?Ваша помощь будет принята с благодарностью.Спасибо.

Это было полезно?

Решение 3

Статья о Bluehost была лучшим ресурсом, но я не внимательно прочитал часть о получении последних исправлений (начало шага 3).На момент написания статьи и даже сейчас с CherryPy версии 3.1.2 вы не могли использовать fcgi в «динамическом режиме» (когда Apache порождает процесс).более здесь.Динамический режим в основном необходим, если вы находитесь на общем хосте.

Я проверил багажник (3.2.0rc1) и, преодолев некоторые препятствия, заставил его работать.Я выполнил шаг 5, метод C в статье bluehost.Вот что было в основной части моего Cherryd.fcgi:

if __name__ == '__main__':
    cherrypy.config.update({
        'server.socket_port': None,
        'server.socket_host': None,
        'server.socket_file': None
    })
    start( daemonize=False, fastcgi=True, imports=["hello"])

Кроме того, в Cherrypy/process/servers.py мне пришлось изменить следующую строку:

# from this
# if not hasattr(socket.socket, 'fromfd'):

# to this
if not hasattr(socket, 'fromfd'):

Итак, заставить его работать можно, но это выглядит как-то хакерски.Вам следует дождаться окончательного выпуска версии 3.2.0 или сделать то, что я сделал, и проверить Веб.py.Мне удалось очень легко заставить его работать с моим общим хостом (документы хорошо объясняют fastcgi/htaccess).

Другие советы

Apache+Bluehost+fastcgi+cherrypy+wsgi — это к сожалению много штук.Мне бы хотелось иметь год, чтобы написать для вас «Полное руководство», но, увы.Вы можете получить некоторое представление от довольно длинная ветка списка рассылки что привело к появлению тех ссылок, которые вы разместили.

Идея:убедитесь, что ваш файл .fcgi содержит ссылку на правильный исполняемый файл Python в начальной строке:

#!/usr/bin/python

Мне нужно было запустить Django с fcgi на Bluehost, и моей проблемой был Apache, использующий неправильную среду Python (работал из оболочки, но не из Интернета/Apache).

Помимо этого, если вы можете распечатать журнал ошибок из своего кода, можете ли вы подтвердить, что ваш код выполняется правильно, без каких-либо исключений, при доступе к веб-странице?(не при запуске из оболочки).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top