2017-09-14 40 views
0

我試圖讓我的Flask應用程序的數據庫工作時遇到了巨大的困難。我正在使用Flask的示例教程,並通過Amazon EC2實例在Apache服務器上部署我的站點。訪問網站沒有任何困難,但每當我嘗試發佈到數據庫時,都會收到500內部服務器錯誤。檢查error.log中顯示:燒瓶:OperationalError:無法打開數據庫文件

[Wed Sep 13 19:37:47.713249 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] [2017-09-13 19:37:47,712] ERROR in app: Exception on /add [POST], referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713291 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] Traceback (most recent call last):, referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713294 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app, referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713296 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492]  response = self.full_dispatch_request(), referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713299 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request, referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713301 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492]  rv = self.handle_user_exception(e), referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713304 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception, referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713306 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492]  reraise(exc_type, exc_value, tb), referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713308 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request, referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713310 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492]  rv = self.dispatch_request(), referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713312 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request, referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713314 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492]  return self.view_functions[rule.endpoint](**req.view_args), referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713330 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] File "/var/www/FlaskApp/FlaskApp/FlaskApp.py", line 76, in add_entry, referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713333 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492]  [request.form['title'], request.form['text']]), referer: http://www.zachflask.tk/ 
[Wed Sep 13 19:37:47.713334 2017] [wsgi:error] [pid 27587] [client 209.54.86.83:50492] OperationalError: unable to open database file, referer: http://www.zachflask.tk/ 

我想這可能是與我的文件權限,但我chmod 777 FlaskApp.db沒有任何結果。

[email protected]:/var/www/FlaskApp/FlaskApp$ ls -la 
total 44 
drwxr-xr-x 5 zld6fd zld6fd 4096 Sep 13 19:45 . 
drwxr-xr-x 6 zld6fd zld6fd 4096 Sep 13 19:37 .. 
-rwxrwxrwx 1 zld6fd zld6fd 3072 Sep 13 19:18 FlaskApp.db 
-rw-rw-r-- 1 zld6fd zld6fd 3194 Sep 13 19:16 FlaskApp.py 
-rw-rw-r-- 1 zld6fd zld6fd 3943 Sep 13 19:16 FlaskApp.pyc 
-rw-r--r-- 1 zld6fd zld6fd 26 Sep 12 20:39 __init__.py 
-rw-r--r-- 1 zld6fd zld6fd 177 Sep 12 21:25 __init__.pyc 
-rwxrwxrwx 1 zld6fd zld6fd 145 Sep 12 21:33 schema.sql 
drwxr-xr-x 5 zld6fd zld6fd 4096 Sep 12 22:14 static 
drwxr-xr-x 2 zld6fd zld6fd 4096 Sep 13 00:34 templates 
drwxr-xr-x 7 zld6fd zld6fd 4096 Sep 11 23:32 venv 

我FlaskApp.py文件包含以下內容:

# Import statements 
import os 
import sqlite3 
from flask import Flask, request, session, g, redirect, url_for, abort, \ 
     render_template, flash 

# Application Instance 
app = Flask(__name__) # Create the instance 
app.config.from_object(__name__) # Load config from this file 

# Load default config and override config from an environment variable 
app.config.update(dict(
     DATABASE='/var/www/FlaskApp/FlaskApp/FlaskApp.db', 
     SECRET_KEY='development key', 
     USERNAME='admin', 
     PASSWORD='password' 
)) 

而且我的Apache的conf文件是:

<VirtualHost *:80> 
      ServerName zachflask.tk 
      ServerAdmin [email protected] 

      WSGIDaemonProcess FlaskApp user=zld6fd group=zld6fd threads=5 
      WSGIScriptAlias//var/www/FlaskApp/flaskapp.wsgi 
      <Directory /var/www/FlaskApp/FlaskApp> 
        WSGIProcessGroup FlaskApp 
        WSGIApplicationGroup %{GLOBAL} 
        Require all granted 
      </Directory> 
      Alias /static /var/www/FlaskApp/FlaskApp/static 
      <Directory /var/www/FlaskApp/FlaskApp/static/> 
        Require all granted 
      </Directory> 
      ErrorLog /var/www/FlaskApp/logs/error.log 
      LogLevel warn 
      CustomLog /var/www/FlaskApp/logs/access.log combined 
</VirtualHost> 

任何幫助將不勝感激。

+0

它可以在獨立的Apache之外工作嗎?你打開了所有的燒瓶調試/異常報告嗎? – pvg

+0

@pvg是的,應用程序可以在本地主機上正常運行。在執行燒瓶運行之前,我設置了FLASK_DEBUG = True。 –

+0

是'在本地主機'相同的機器/環境/應用程序? – pvg

回答

0

該解決方案與@pvg在評論中建議的一樣。我的FlaskApp.db始終設置爲正確的權限,但未能更新其所在目錄的權限。我將FlaskApp.db文件移動到一個新的tmp/文件夾中並運行sudo chmod 777 tmp

相關問題