2009-11-03 2 views
5

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

Я получаю 500 ошибок ж/Apache журналы, говоря "Преждевременный конец заголовков сценария". Я пробовал все (разрешения/shebangs/full-paths/deamonized/not-daimonized). Я знаю, что Apache правильно выполняет мой .fcgi, потому что я могу печатать в журнале ошибок из python, но это все. Кто-нибудь там успешно установил CherryPy или любую другую инфраструктуру на общем хосте раньше? Ваша помощь будет принята с благодарностью. Благодарю.

ответ

1

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

Я проверил багажник (3.2.0rc1), и после прыжка через некоторые обручи получил работу. Я выполнил шаг 5, метод C в статье с голубым ходом. Здесь был материал, в основном моего 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/процесса/servers.py, я должен был изменить следующую строку:

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

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

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

1

Apache + Bluehost + fastcgi + cherrypy + wsgi, к сожалению, много частей. Мне жаль, что у меня не было года, чтобы написать Окончательное руководство для вас, но, увы. Вы можете получить некоторое представление от rather long mailing list thread, в результате чего вы отправили ссылки.

+0

Сначала я отлаживал свой собственный linux box, чтобы максимально контролировать ситуацию. Спасибо за ссылку. Это довольно долгий разговор.Надеюсь, что они смогут сделать вещи более плавными в следующей версии – arshaw

1

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

#/USR/бен/питон

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

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

+0

yup Я убедился, что shebang был прав, а также разрешения. мой python определенно работает, но apache не правильно подключил fastcgi. (см. мое решение выше). спасибо – arshaw

0

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

+0

он обычно просто зависает (без вывода). Затем я обнаружил, что мне нужно daemonize = False, а затем все перестало виться. Но затем он попытался запустить процесс fcgi на порте 4000, о котором apache не знал, поэтому выход не будет. похоже, что «динамический режим» решает мои проблемы (см. мое решение). благодаря – arshaw

 Смежные вопросы

  • Нет связанных вопросов^_^