我正在尝试在Apache上使用FastCGI(实际上是fcgid)配置Python迷你框架CherryPy。我在共享主机上,所以我无法访问httpd.conf,只有htaccess。我遵循这些教程无济于事:
我不断收到500条错误,而Apache日志上写着“脚本标题过早结束”。我已经尝试了一切(权限/ shebangs / full-paths / deamonized / not-daimonized)。我知道Apache正在执行我的.fcgi,因为我能够从python打印到错误日志,但就是这样。之前有没有人在共享主机上成功安装过CherryPy或任何其他框架?非常感谢您的帮助。感谢。
答案 0 :(得分:1)
Apache + Bluehost + fastcgi + cherrypy + wsgi很遗憾很多。我希望我有一年的时间为你写一份权威指南,但是唉。您可能会从rather long mailing list thread获得一些见解,这会产生您发布的链接。
答案 1 :(得分:1)
一个想法:确保你的.fcgi文件在初始行中引用了正确的python可执行文件:
#!的/ usr / bin中/ Python的
我必须让Django在Bluehost上使用fcgi运行,使用错误的python环境的apache是我的问题(从shell工作,但不是来自web / apache)。
除此之外,如果您可以从代码中打印到错误日志,当您访问网页时,是否可以确认您的代码是否正确执行,没有任何例外? (不是从shell运行时)。
答案 2 :(得分: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 / process / servers.py中,我不得不更改以下行:
# from this
# if not hasattr(socket.socket, 'fromfd'):
# to this
if not hasattr(socket, 'fromfd'):
所以,它可以让它工作,但它感觉有点hacky。您应该等待版本3.2.0的最终版本,或者执行我所做的操作并查看Web.py。我能够非常轻松地使用我的共享主机(docs很快解释fastcgi / htaccess)。
答案 3 :(得分:0)
在您的网络服务器的日志文件中,它实际上应该显示混淆输出的内容。您确定要查看错误日志以及访问日志吗?