提问人:user1610406 提问时间:3/29/2016 最后编辑:Communityuser1610406 更新时间:8/29/2023 访问量:3004
FastCGI、Lighttpd 和 Flask
FastCGI, Lighttpd, and Flask
问:
我正在我的 Raspberry Pi 上设置一个简单的 Web 服务器,但我似乎无法正确设置 lighttpd、fastcgi 和 flask。
到现在为止,我已经经历了几次迭代,最近的一次是/etc/lighttpd/lighttpd.conf
fastcgi.server = ("/test" =>
"test" => (
"socket" => "/tmp/test-fcgi.sock",
"bin-path" => "/var/www/py/test.fcgi",
"check-local" => "disable"
)
)
这在 .第一行看起来不对,所以我在胖箭头后面添加了一组 parens:/etc/init.d/lighttpd start
fastcgi.server = ("/test" => (
...
))
这并没有吐出错误,但是当我尝试连接时,我进入了Chrome。然后我尝试删除,这有同样的问题。我也尝试了这个问题中显示的配置,也出现了同样的问题。ERR_CONNECTION_REFUSED
"/test" =>
在:/var/www/py/test.fgci
#!/usr/bin/python
from flup.server.fcgi import WSGIServer
from test import app
WSGIServer(app, bindAddress="/tmp/test-fcgi.sock").run()
在:/var/www/py/test.py
from flask import Flask
app = Flask(__name__)
@app.route("/test")
def hello():
return "<h1 style='color:red'>☭ hello, comrade ☭</h1>"
当我用 启动它时,电流失败。lighttpd.conf
/etc/init.d/lighttpd start
答:
我无法真正帮助您处理 Python 部分,因为它超出了我的技能集,但是当将 php 作为 fcgi 服务器运行时,我会使用如下所示的 lighttpd.conf。
fastcgi.server += ( ".php" =>
((
"host" => "127.0.0.1",
"port" => "9000",
"broken-scriptfilename" => "enable"
))
)
因此,我假设如下所示的内容是python所需要的。
fastcgi.server += ( "/test" =>
((
"socket" => "/tmp/test-fcgi.sock",
"bin-path" => "/var/www/py/test.fcgi",
"check-local" => "disable"
))
)
评论
proxy-pass
gunicorn
uwsgi
考虑到您ERR_CONNECTION_REFUSED收到了错误消息,问题似乎可能与不正确的身份验证或权限受限有关,而不是语法问题。
可能性:
- 检查lighttpd、fastcgi的运行端口状态。(IPv6 检查)
netstat --listen
或者 lighttpd 日志。
- 你有没有意识到你写了'/test'=>'test',只要确保格式如下。
fastcgi.server = ("/hello.fcgi" =>
((
"socket" => "/tmp/hello-fcgi.sock",
"bin-path" => "/var/www/demoapp/hello.fcgi",
"check-local" => "disable",
"max-procs" => 1
))
)
- 由于应用程序是从您的应用程序导入的,因此您需要将此行 'if name == 'main' 添加到 /var/www/py/test.fcgi 中。
#!/usr/bin/python
from flup.server.fcgi import WSGIServer
from yourapplication import app
if __name__ == '__main__':
WSGIServer(app, bindAddress="/tmp/test-fcgi.sock").run()
这是参考。
请事先确保应用程序文件中可能存在的任何 app.run() 调用都在 if name == 'main': 块内或移动到单独的文件中。只要确保它没有被调用,因为这将始终启动一个本地WSGI服务器,如果我们将该应用程序部署到FastCGI,我们不希望这样做。
https://flask.palletsprojects.com/en/2.0.x/deploying/fastcgi/
一旦你检查了所有的可能性,让我们看看会发生什么。
评论