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 用户对该文件的访问权限。
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 具有项目文件夹和数据库文件的权限,一切都应该正常。
添加回答
举报