我有一个 Django 1.5 应用程序,该应用程序在apache2服务器上运行,并使用 sqlite 数据库。
数据库的设置如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/var/www/html/project/devdb',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
其中 devdb 是生成的数据库文件。
当我从终端控制台运行迁移命令时,它运行良好,并且数据已迁移到数据库。
但是当我访问应用程序URL时,它给出了错误消息
DatabaseError at /url_path/
attempt to write a readonly database
然后我使用更改文件的权限
sudo chown 777 devdb
然后开始显示错误
DatabaseError at /url_path/
unable to open database file
ls -la
为devdb
文件提供以下输出
-rwxr-xr-x 1 ubuntu ubuntu 1036 May 11 2018 manage.py
-rw-rw-r-- 1 ubuntu ubuntu 291840 May 28 09:31 devdb
使用{p1>运行user
的apache2
ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'
给予www-data
但是再次将文件所有者更改为www-data
会导致无法打开数据库文件。
答案 0 :(得分:0)
一个sqlite数据库需要归www-data所有,它所在的目录也必须拥有。
因此,如果您的应用位于/var/www/app
中,请
cd /var/www
chown www-data:www-data app
cd app
chown ww-data:www-data devdb