【问题标题】:Flask + apache Internal Server Error when making request or databaseFlask + apache 发出请求或数据库时发生内部服务器错误
【发布时间】:2015-02-23 05:01:03
【问题描述】:

我在烧瓶中使用 apache,当打开 /login 时(我在这里使用数据库)我得到内部服务器错误 作为数据库即时通讯使用 sqlite 和 python 库 sqlite3

DATABASE = '../../var/www/flask/database'

连接数据库功能:

def connect_db():
    return sqlite3.connect(DATABASE)

登录代码

@app.route('/login', methods=['POST'])
def login():
    if request.cookies.get("name"):
        return render_template("home.html",name=request.cookies.get('name'))
    g.db = connect_db() 
    cur = g.db.execute('SELECT email, password, name, confirmed FROM users')
    for row in cur.fetchall(): 
            if row[0] == request.form['email'] and row[1] ==   hashlib.sha224(request.form['password']).hexdigest() and row[3] == 1:
                resp = make_response(redirect(host + "/home"))
                resp.set_cookie("name",row[2])
                resp.set_cookie("password",row[1])
                return resp
    return redirect(host)

这是我的 .wsgi 代码

import sys

sys.path.insert(0, '/var/www/flask/')

from routes import app as application

这是我的应用树
烧瓶 - 静态 - (css js 等)
- 模板 - (jinja2 模板)
- 数据库.db
- min.wsgi
- routes.py (app)

这里是 routes.com.conf

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName server.test
    WSGIScriptAlias / /var/www/flask/min.wsgi
    <Directory /var/www/flask/>
            Order allow,deny
            Allow from all
    </Directory>
</VirtualHost>

【问题讨论】:

  • 您的 Apache 错误日志中记录了什么错误?
  • DATABASE 设置为什么?
  • 不要使用DATABASE的相对路径; WSGI 设置一个你可能没有写权限的工作目录。
  • 最后我为数据库设置了路径,它可以工作。谢谢@MartijnPieters :)

标签: python apache python-2.7 flask


【解决方案1】:

您需要为您的DATABASE 值使用绝对路径

mod_wsgi 模块将为您的应用设置不同的当前工作目录,您很可能无法访问该目录。即使您确实授予了 Apache 进程对该目录的写入权限,您也不希望最终更改其他地方看似无害的设置以使其再次停止工作。

【讨论】:

    【解决方案2】:

    可能是因为login 函数中的错误缩进?它可能会导致一些其他错误日志,但这是我在查看格式错误的代码时的第一个猜测(即使它只是错误的复制粘贴)。

    【讨论】:

    • 复制过去是错误的。通常使用烧瓶 127.0.0.1:5000 服务器运行正常。
    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 2021-12-19
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多