2010-01-06 51 views
1

我正在为使用django的客户端构建网站。它被托管在共享主机上,mod_wsgi无法使用。在过去的一年里,我使用fcgi开始工作,但是当我回来的时候,它被打破了。获取flup 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服务器,我可以运行脚本很好,输出如下:

[email protected]:~/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。如果我rm x.pyc,然后点击该网站,x.pyc不会被创建。

我也注意到,从

terminated by calling exit with status '118' 

改为

terminated by calling exit with status '116' 

的错误,我希望我能找到这些退出状态的参考。

+0

你用什么服务器来运行mymembers.fcgi? – Tobu 2010-01-10 16:17:56

+0

Debian Etch,Apache 1.3 该网址是http://www.mymembers.co.za/ – 2010-01-10 16:37:06

+1

我怀疑mod_fastcgi配置错误。请发布或粘贴您的apache配置的相关部分。 – Tobu 2010-01-10 19:30:24

回答

2

退出状态116和118来自suexec。通过阅读source code,我发现这些错误是由文件/目录可由群组或其他人写入,suexec认为这是一个安全问题。从组中删除写访问修复了问题。

0

嘿,谢谢!我只是贴上评论。

  • 你用什么服务器来运行mymembers.fcgi? - 东武
  • Debian蚀刻,Apache 1.3的URL是mymembers.co.za - 加里范德梅尔韦
  • 我怀疑mod_fastcgi配置错误。请发布或粘贴您的apache配置的相关部分。 - 东武
  • 由于这是托管共享主机,我没有想到看看配置。看着配置帮助我找到了问题,所以你真的帮助了我。我希望我能够把赏金奖给你。 meta.stackoverflow.com/questions/35081/... - Gary van der Merwe
+0

-1:该配置不包括在任何地方问题或答案。我们无法从中吸取教训。 – 2012-01-12 12:23:07

+0

查看其他答案。 – 2012-01-12 12:32:58