在共享主机上使用FastCGI的CherryPy(或其他Python框架)

ars*_*haw 5 python fastcgi cherrypy mod-fcgid

我试图在Apache上使用FastCGI(实际上是fcgid)配置Python迷你框架CherryPy.我在共享主机上,所以我无法访问httpd.conf,只有htaccess.我遵循这些教程无济于事:

我不断收到500条错误,而Apache日志上写着"脚本标题过早结束".我已经尝试了一切(权限/ shebangs/full-paths/deamonized/not-daimonized).我知道Apache正在执行我的.fcgi,因为我能够从python打印到错误日志,但就是这样.之前有没有人在共享主机上成功安装过CherryPy或任何其他框架?非常感谢您的帮助.谢谢.

ars*_*haw 1

Bluehost 文章是最好的资源,但我没有仔细阅读有关获取最新补丁的部分(步骤 3 的开头)。在撰写本文时,甚至现在使用 CherryPy 版本 3.1.2,您也无法执行“动态模式”fcgi(当 apache 生成进程时)。更多这里。如果您位于共享主机上,动态模式基本上是必需的。

我已经检查了主干(3.2.0rc1),并在跳过一些圈子后,让它工作。我按照bluehost文章中的步骤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"])
Run Code Online (Sandbox Code Playgroud)

另外,在cherrypy/process/servers.py中,我必须更改以下行:

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

# to this
if not hasattr(socket, 'fromfd'):
Run Code Online (Sandbox Code Playgroud)

所以,让它工作是可能的,但感觉有点hacky。您应该等待 3.2.0 版本的最终版本,或者像我一样查看Web.py。我能够非常轻松地使其与我的共享主机一起工作(文档很好地解释了 fastcgi/htaccess )。