我已成功将Django-CMS集成到Django中,当我访问本地IP时,可以看到我的页面。但是,当我尝试访问“/admin”(在那里我可以开始使用CMS功能)时,我会收到“DatabaseError at /admin/ attempt to write a readonly database”的错误提示。
所以,由于我的项目文件夹中有一个.sqlite文件,我运行了“ls -l”命令,返回结果如下:
-rw-r--r--. 1 root root 133120 Jan 5 11:53 DATABASE.sqlite
好的,我想也许 Apache 由于某些权限原因无法读取该文件,所以在 Stackoverflow 上进行了一些类似问题的研究后,我运行了:
> chmod 664 DATABASE.sqlite
> chown apache /srv/mysite
> chown apache /srv/mysite/DATABASE.sqlite
现在,ls -l
输出的内容如下:
-rw-rw-r--. 1 apache root 133120 Jan 5 11:53 DATABASE.sqlite
很不幸,当我尝试访问我的Django应用程序中的/admin时,仍然遇到相同的错误。非常感谢任何帮助!可能是与SELinux权限有关,但我不知道从哪里开始诊断发生了什么权限问题。
编辑:
我运行了
> chown apache:apache /srv/mysite
> chown apache:apache /srv/mysite/DATABASE.sqlite
快速执行 ls -l
命令可以查看 mysite
目录和 .sqlite
文件的所有者现在是 apache
。然而,当我尝试访问 /admin
页面时仍然遇到错误。我将 /srv/mysite
目录的权限设置为 757,将 DATABASE.sqlite
文件的权限设置为 756,因为这是我能做的最好的方式。我被告知这是一种安全风险,但我似乎无法找出如何授予更少的权限并通过 unable to read/open database file
错误。这是因为 SELinux 的原因吗?
顺便说一下,我在 CentOS 上使用普通用户帐户操作,并在需要提升权限时使用 sudo:
[noblerare@localhost ]$
/srv/mysite
设置为755,将DATABASE.sqlite
设置为756。这是否存在安全风险?如果我更改权限,会出现错误。 - noblerarechown
命令时使用了apache
而不是www-data
用户。无论如何,现在/srv/mysite
和DATABASE.sqlite
的所有者都是apache
。但不管怎样,如果我将“所有人”的权限更改为低于读/写/执行或读/写的权限,我都会出现错误。 - noblerarechmod -R u+w /srv/mysite/
之后就起作用了。 - anils