亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 www-data 添加到某個組后,仍然無法讓 apache 服務器訪問數據庫

將 www-data 添加到某個組后,仍然無法讓 apache 服務器訪問數據庫

MMMHUHU 2022-10-06 19:46:00
這是將 sqlalchemy 會話連接到數據庫文件的代碼from sqlalchemy.orm import sessionmakerfrom DB_setup_alchemy import Base,User,Visitor,VisitRecordfrom 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 meansdb_path='sqlite:///'+getcwd()+'/data.db'print(db_path)engine = create_engine(db_path,connect_args={'check_same_thread': False})Base.metadata.bind = engineDBSession = 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 .awsdrwxrwxr-x 5 ubuntu ubuntu 4096 Apr 11 20:38 flaskappdrwx------ 2 root   ubuntu 4096 Apr 11 20:11 testflaskapp 文件夾中的文件: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.pydrwxrwxr-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.htmldrwxrwxr-x 2 ubuntu ubuntu  4096 Apr 11 16:46 templatesdrwxrwxr-x 4 ubuntu ubuntu  4096 Apr 11 16:13 venvdata.db 和文件夾flask 都對ubuntu 組中的用戶具有權限,我可以看到用戶www-data 也在ubuntu 組中:(venv) ubuntu@ip-172-31-24-93:~/flaskapp$ groups ubuntuubuntu : 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-datawww-data : www-data這是來自瀏覽器的錯誤:Internal Server ErrorThe 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.我嘗試了簡單的打印你好網絡應用程序,它正在工作。所以,我想知道我應該怎么做才能更改所有者或文件權限以使我的燒瓶應用程序正常工作?
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

您向我們展示了$ groups ubuntu和的輸出$ groups www-data。它表示ubuntu具有組寫入權限,例如附加到664組中的文件www-data。

但是您的網絡服務器是以用戶身份www-data而不是作為用戶運行的ubuntu,所以這無關緊要。重要的是想要www-data屬于該ubuntu組以便寫入當前數據庫文件,但它不在該組中。你可以編輯/etc/groups來解決這個問題。

或者,您可能希望$ sudo chgrp www-data data.db(或 chown)授予 apache Web 用戶對該文件的訪問權限。


查看完整回答
反對 回復 2022-10-06
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

終于自己弄清楚是什么問題:這個問題背后的錯誤是apache用戶與ubuntu不同。所以當 apache 運行我的 web 應用程序時,它是從不同的工作目錄運行的,當然找不到數據庫文件。


因此,我首先在代碼中更改了數據庫 .db 文件的路徑以更正絕對路徑,如下所示:


engine = create_engine('sqlite:////home/ubuntu/flaskproject/data.db',connect_args={'check_same_thread': False})

然后將項目文件夾和數據庫文件的所有者更改為 www-data(apache 用戶):


sudo chown www-data .

sudo chown www-data data.db

并確保所有者對項目文件夾和 data.db 文件具有讀寫權限(在我的情況下已經滿足)


解決權限問題的另一種解決方案是將用戶 www-data 添加到 ubuntu 組,因此我們不需要更改項目文件夾和 data.db 文件的所有者(但要確保 ubuntu 組中的用戶具有讀寫權限)


usermod -a -G ubuntu www-data

所以總的來說,只要數據庫的路徑是正確的(建議絕對路徑)并且用戶 www-data 具有項目文件夾和數據庫文件的權限,一切都應該正常。


查看完整回答
反對 回復 2022-10-06
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號