Трудность заставить работать скрипт fcgi flup - PullRequest
1 голос
/ 06 января 2010

Я создаю сайт для клиента, используя django. Он был размещен на общем хостинге, и mod_wsgi не может быть использован. В прошлом году я работал с помощью fcgi, но когда вернулся, он сломался.

Я заменил скрипт fcgi на простой сценарий hello world:

#!/usr/bin/python
def myapp(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World!\n']

try:
    from flup.server.fcgi import WSGIServer
    WSGIServer(myapp).run()
except:
    import sys, traceback
    traceback.print_exc(file=open("errlog.txt","a"))

Протестировано и работает на моем локальном сервере, но на размещенном сервере я получаю эту ошибку:

<title>FCGI Error</title>
A timeout occured while waiting for the script output (in: /usr/www/users/mymemb/).

Если я посмотрю журнал ошибок, я увижу это:

[Wed Jan  6 16:59:37 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" (user mymemb, gid 100) restarted (pid 1057)

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" (pid 1057) terminated by calling exit with status '118'

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

etc ...

Если я ssh на сервер, я могу нормально запустить скрипт со следующим выводом:

mymemb@www81:~/public_html$ ./mymembers.fcgi 
WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI!
WSGIServer: missing FastCGI param SERVER_NAME required by WSGI!
WSGIServer: missing FastCGI param SERVER_PORT required by WSGI!
WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI!
Status: 200 OK
Content-Type: text/plain
Content-Length: 13

Hello World!

Как мне это исправить?

Добавлена ​​информация:

Кажется, что скрипт вообще не работает. Если я добавлю import x вверху скрипта и запусту его из ssh, я вижу, что x.pyc создается. Если я нажму x.pyc, а затем попаду на сайт, x.pyc не будет создан.

Я также заметил, что ошибки изменились с

terminated by calling exit with status '118'

до

terminated by calling exit with status '116'

Хотелось бы найти ссылку на эти статусы выхода.

Ответы [ 2 ]

2 голосов
/ 10 января 2010

Статусы выхода 116 и 118 были получены от suexec. Читая исходный код , я обнаружил, что эти ошибки вызваны тем, что файл / каталог доступен для записи группе или другим пользователям, что suexec считает проблемой безопасности. Удаление доступа для записи из группы решило проблему.

0 голосов
/ 11 января 2010

Эй, спасибо! Я просто вставлю комментарии.

  • Какой сервер вы используете для запуска mymembers.fcgi? - Тобу
  • Debian Etch, Apache 1.3 URL-адрес mymembers.co.za - Гэри ван дер Мерве
  • Я подозреваю, что mod_fastcgi неправильно настроен. Пожалуйста, разместите или вставьте соответствующие части вашей конфигурации Apache. - Тобу
  • Поскольку это размещено на виртуальном хостинге, я не думал смотреть на конфиг. Просмотр конфигурации помог мне найти проблему, поэтому вы мне очень помогли. Я надеюсь, что смогу вручить вам награду. meta.stackoverflow.com/questions/35081/… - Гари ван дер Мерве
...