500 Lighttpd上的内部服务器错误Flask Api



我在Lighttpd下(在Rasp Pi下(构建Flask Api已经挣扎了几天,但遇到了"500内部服务器错误"的问题。

在">/var/www/api/api.py"下,

#!/usr/bin/env python
import requests
from flask import Flask
from flask import request
from flask import jsonify
app = Flask(__name__)
@app.route("/", methods=["GET"])
def home():
#return "<h3>TestLine</h3>"
return jsonify("TestLine")
@app.route("/GetDevice", methods=["GET"])
def getdevice():
Subject = request.args.get("Subject")
return jsonify("TestLine 123")
app.run(host = "0.0.0.0", port = 80)

在">/var/www/api/api.fcgi"下,

#!/usr/bin/env python
from flup.server.fcgi import WSGIServer
from api import app
if __name__ == "__main__":
WSGIServer(app, debug = True).run()

在">/etc/lighttpd/lighttpd.conf"下,

debug.log-request-handling = "enable"
server.modules   += ( "mod_fastcgi" )
server.modules   += ( "mod_rewrite" )
server.modules   += ( "mod_alias" )
server.modules   += ( "mod_accesslog" )
server.document-root        = "/var/www"
#server.port = 80
server.modules += ( "mod_cgi" )
mimetype.assign = (
".html" => "text/html", 
".txt" => "text/plain",
".jpg" => "image/jpeg",
".png" => "image/png",
".js" => "text/javascript",
".css" => "text/css"
)
static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", ".inc", ".pl" )
cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
".cgi" => "/usr/bin/perl",
".rb"  => "/usr/bin/ruby",
".erb" => "/usr/bin/eruby",
".py"  => "/usr/bin/python",
".php" => "/usr/bin/php-cgi" )
index-file.names   += ( "index.pl",   "default.pl",
"index.rb",   "default.rb",
"index.erb",  "default.erb",
"index.py",   "default.py",
"index.php",  "default.php" )
server.errorlog    = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"
fastcgi.debug = 1
fastcgi.server = ("/api.fcgi" =>
((
"socket" => "/tmp/api-fcgi.sock",
"bin-path" => "/var/www/api/api.fcgi",
"check-local" => "disable",
"max-procs" => 1
))
)
alias.url = ( 
"/api/" => "/var/www/api"
)
url.rewrite-once = (
"^(/api($|/.*))$" => "$1",
"^(/.*)$" => "/api.fcgi$1"
)

在终端下运行"/var/www/api/api.fcgi"时没有错误。我希望有人能真诚地帮我指出错误并表示感谢。

lighttpd在您的配置中的端口80上运行。当lighttpd尝试启动后端时,后端将失败,因为您的python代码也在尝试侦听端口80

app.run(host = "0.0.0.0", port = 80)

由于您已经将lighttpd配置为启动后端,因此应该将其配置为侦听stdin。lighttpd创建您配置的套接字("/tmp/api-fcgi.sock"(,并在应用程序的stdin上使用该套接字启动后端。

相关内容

  • 没有找到相关文章

最新更新