如何解决在 Python 中使用 LIGHTTPD 的 FastCGI
我目前正在尝试在启用 fastcgi 的情况下使用 python 语言设置 lighttpd 服务器。但是,我遇到了这个错误,经过数小时的谷歌搜索,我似乎无法找到解决方案,我不知道是什么导致了错误,因为我对此还很陌生。看一看,我希望你能帮助我!非常感谢,祝您有美好的一天!
重要细节: 操作系统 --> Fedora Python 版本 --> 3.9.4
我遇到的错误:
Traceback (most recent call last):
File "/etc/lighttpd/conf.d/test.py",line 8,in <module>
WSGIServer(myapp).run()
File "/usr/local/lib/python3.9/site-packages/flup/server/fcgi.py",line 111,in run
sock = self._setupSocket()
File "/usr/local/lib/python3.9/site-packages/flup/server/fcgi_base.py",line 1025,in _setupSocket
sock = socket.fromfd(FCGI_LISTENSOCK_FILENO,socket.AF_INET,File "/usr/lib64/python3.9/socket.py",line 545,in fromfd
return socket(family,type,proto,nfd)
File "/usr/lib64/python3.9/socket.py",line 232,in __init__
_socket.socket.__init__(self,family,fileno)
OSError: [Errno 88] Socket operation on non-socket
我的python文件,目录:/etc/lighttpd/conf.d/test.py:
#!/usr/bin/python3.9
def myapp(environ,start_response):
start_response('200 OK',[('Content-Type','text/plain')])
return ['Hello World!\n']
if __name__ == '__main__':
from flup.server.fcgi import WSGIServer
WSGIServer(myapp).run()
我的fastcgi配置文件在目录:/etc/lighttpd/conf.d/fastcgi.conf
fastcgi.server = (
".py" =>
(
"python-fcgi" =>
(
"socket" => "/var/run/lighttpd/socketsfastcgi.python.socket","bin-path" => "test.py","check-local" => "disable","max-procs" => 1,)
))
在我的 /var/run/lighttpd 中,有一个文件 socketsfastcgi.python.socket-0
(我尝试更改我的套接字路径以将 -0 合并为“/var/run/lighttpd/socketsfastcgi.python.socket-0”并创建了一个文件 socketsfastcgi.python.socket-0-0)
解决方法
在 Fedora 系统上,在我执行 pip install flup
后,事情对我有用(我无法重现您的问题),因为我的 Fedora 34 测试系统上没有。
检查您的环境以确保您没有覆盖 python 包位置并意外指向 python2 包。
顺便说一句:您应该更喜欢在 "bin-path"
中使用完整路径,例如"bin-path" => "/path/to/test.py"
仅供参考:根据 max-procs,lighttpd 在 -0
上创建带有 -1
、-2
、-3
、"socket"
等后缀的套接字,因为套接字必须唯一命名。如您所见,您在 "socket"
路径中指定的内容不需要 -0
后缀。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。