我正在CentOS7上运行Flask应用程序,并使用sqlite3作为数据库,并使用apache作为虚拟主机。
但是,当用户尝试在我的Web应用程序上执行写操作时,我遇到了sqlite3.OperationalError: attempt to write a readonly database
错误。 (从数据库读取数据就可以了)
我通读了很多有关文件权限问题的问题,我尝试授予对项目文件夹和.db文件的所有访问权限,但是仍然出现错误。有谁知道发生了什么事?
Apache httpd.conf
<Directory />
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
虚拟主机.conf
<VirtualHost *:82>
ServerName myweb.com
WSGIDaemonProcess myweb user=flaskapp group=flaskapp threads=5
WSGIScriptAlias / /var/www/myweb/wsgi.py
<Directory /var/www/myweb>
WSGIProcessGroup myweb
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
</VirtualHost>
项目文件夹的文件权限
[root@localhost myweb]# ls -l
total 20
-rwxrwxrwx. 1 flaskapp root 6785 Jan 9 10:33 index.py
-rwxrwxrwt. 1 flaskapp flaskapp 8192 Jan 9 10:19 myweb.db
drwxr-xr-x. 2 flaskapp root 34 Jan 8 18:46 __pycache__
drwxr-xr-x. 2 flaskapp root 77 Jan 8 18:46 static
drwxr-xr-x. 2 flaskapp root 122 Jan 8 18:46 templates
-rwxr-xr-x. 1 flaskapp root 133 Jan 8 18:52 wsgi.py
我的设置为:CentOS7,Python3.6.7,Apache2.4.6,sqlite3
答案 0 :(得分:0)
问题似乎与CentOS 7上的SELinux有关。我已通过setenforce 0
暂时关闭SELinux来解决了该问题。