gpt4 book ai didi

Python Flask 调试记录器在生产环境中导致 500 服务器错误 (Apache)

转载 作者:行者123 更新时间:2023-11-28 21:15:28 25 4
gpt4 key购买 nike

尝试将 500 个错误记录到我的 Flask 网络应用程序的日志文件中。在本地主机上正常工作,但在 Ubuntu 上使用 mod_WSGI 和 Apache 的生产服务器上不能正常工作(根据此设置@ https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps)

from flask import Flask, render_template
import logging

app = Flask(__name__)

app.config['LOG_FILE'] = 'application.log'
if not app.debug:
import logging
from logging import FileHandler
file_handler = FileHandler(app.config['LOG_FILE'])
file_handler.setLevel(logging.INFO)
app.logger.addHandler(file_handler)

@app.route("/about")
def about():
##CREATE AN ERROR
X = "A" + 1
return render_template('about.html')

if __name__ == "__main__":
app.run('0.0.0.0', port=8080, debug=False)

关于为什么这在本地环境中有效但在生产环境中无效的任何想法?更改调试设置似乎无法解决。

最佳答案

最有可能发生的情况是,您正在使用用户 X 运行您的 Web 服务器进行开发,并且该用户对您的 Flask 应用程序存储的目录具有写入权限 - 因此它可以写入 application.log.

我从您发布的教程中注意到,所有目录都是使用 sudo 创建的,因此您的目录权限由 root 用户拥有,而您的 Flask 应用程序作为不同的用户运行,而不是有权写入 root 拥有的目录。

有两个潜在的修复方法:

将安装 Flask 应用程序的目录的权限更改为相同:

$ sudo chown -R www-data:www-data /var/www/FlaskApp

更改写入日志文件的位置(首选方法):

$ sudo mkdir /var/log/flaskapp
$ sudo chown -R www-data:www-data /var/log/flaskapp

然后将代码更改为:

app.config['LOG_FILE'] = '/var/log/flaskapp/application.log'

关于Python Flask 调试记录器在生产环境中导致 500 服务器错误 (Apache),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30142763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com