我正在使用 apache 和 Flask,当打开/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
这是我的应用程序树
Flask - 静态 - (css js 等)
- 模板 - (jinja2 模板)
- 数据库.db
- min.wsgi
-routes.py(应用程序)
这里是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>
最佳答案
您需要为 DATABASE
值使用绝对路径。
mod_wsgi
模块将为您的应用设置一个不同的当前工作目录,您很可能无权访问该目录。即使您确实授予 Apache 进程对该目录的写入权限,您也不希望最终在其他地方更改看似无害的设置,从而使其再次停止工作。
关于python - Flask + apache 发出请求或数据库时出现内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27647697/