вот код для подключения сеанса sqlalchemy к файлу базы данных
from sqlalchemy.orm import sessionmaker
from DB_setup_alchemy import Base,User,Visitor,VisitRecord
from os import getcwd
# link to the DB we are using
# pay attention to this part, if without check_same_thread=false, there will be lots of errors
# but what is going on behind this part of code
# what does engine and session really means
db_path='sqlite:///'+getcwd()+'/data.db'
print(db_path)
engine = create_engine(db_path,connect_args={'check_same_thread': False})
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()
все файлы моего проекта находятся в папке flaskapp
drwxrwxr-x 9 ubuntu ubuntu 4096 Apr 11 20:09 .
drwxr-xr-x 3 root root 4096 Apr 11 04:11 ..
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 11 04:31 .aws
drwxrwxr-x 5 ubuntu ubuntu 4096 Apr 11 20:38 flaskapp
drwx------ 2 root ubuntu 4096 Apr 11 20:11 test
файлы в папке flaskapp:
drwxrwxr-x 5 ubuntu ubuntu 4096 Apr 11 20:38 .
drwxrwxr-x 9 ubuntu ubuntu 4096 Apr 11 20:09 ..
-rw-rw-r-- 1 ubuntu ubuntu 345 Apr 11 16:37 AWS_API.py
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 11 17:37 __pycache__
-rw-rw-r-- 1 ubuntu ubuntu 296 Apr 11 16:23 app.wsgi
-rwxrwxr-x 1 ubuntu ubuntu 20480 Apr 11 17:37 data.db
-rw-rw-r-- 1 ubuntu ubuntu 7426 Apr 11 20:38 flaskapp.py
-rw-rw-r-- 1 ubuntu ubuntu 6 Apr 11 04:34 index.html
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 11 16:46 templates
drwxrwxr-x 4 ubuntu ubuntu 4096 Apr 11 16:13 venv
и data.db, и папка flask имеют разрешения для пользователей в группе Ubuntu, и я вижу, что пользователь www-data также входит в группу Ubuntu:
(venv) ubuntu@ip-172-31-24-93:~/flaskapp$ groups ubuntu
ubuntu : ubuntu adm dialout cdrom floppy sudo audio dip www-data video plugdev lxd netdev
, но если я наберу : groups www-data
(venv) ubuntu@ip-172-31-24-93:~/flaskapp$ groups www-data
www-data : www-data
Вот информация об ошибке:
(venv) ubuntu@ip-172-31-24-93:~/flaskapp$ cat /var/log/apache2/error.log
[Sat Apr 11 20:57:03.891126 2020] [wsgi:error] [pid 26861:tid 140079813093120] [client 209.6.74.140:53631] ERROR:flaskapp:Exception on / [GET]
[Sat Apr 11 20:57:03.891160 2020] [wsgi:error] [pid 26861:tid 140079813093120] [client 209.6.74.140:53631] Traceback (most recent call last):
..............
[Sat Apr 11 20:57:03.891568 2020] [wsgi:error] [pid 26861:tid 140079813093120] [client 209.6.74.140:53631] sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
[Sat Apr 11 20:57:03.891574 2020] [wsgi:error] [pid 26861:tid 140079813093120] [client 209.6.74.140:53631] (Background on this error at: http://sqlalche.me/e/e3q8)
[Sat Apr 11 20:57:03.891581 2020] [wsgi:error] [pid 26861:tid 140079813093120] [client 209.6.74.140:53631]
Вот ошибка из браузера:
Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
Я пробовал простую печать Привет, веб-приложение, и оно работает. Итак, мне было интересно, что мне нужно сделать, чтобы изменить владельца или права доступа к файлу, чтобы мое flask приложение работало?