Apache 上的 Django 出现 500 错误,错误日志显示“服务器配置拒绝客户端”

Apache 上的 Django 出现 500 错误,错误日志显示“服务器配置拒绝客户端”

关于类似问题有很多问题,但没有特别提到错误 500 与 Django 的结合。例如类似的问题:

Apache 错误日志:

[Wed Jun 19 18:41:44.364270 2019] [access_compat:error] [pid 9386:tid 140669708334848] [client 1.2.3.4:1948] AH01797: client denied by server configuration: /home/user/website/wsgi.py, referer: https://website.org/admin/login/?next=/admin/

错误显示如下:

Error 500: Internal Server Error

但这仅在尝试访问管理面板时出现,浏览页面或下载受 Apache 保护的目录后面的文件时不会出现。我能找到的所有问答都谈到了 Apache 设置中的错误,但似乎不存在(自安装以来 Apache 没有任何变化)。

答案1

错误消息具有误导性。错误的实际原因是服务器数据库由 提供服务sqlite,并且文件在更新期间获得了错误的所有权。它现在归rootDjango Apache 用户 ( www-data) 所有,并且不可由其写入:

username@servername:~/project$ ls -lsa
total 924
  4 drwxr-xrwx 7 www-data www-data    4096 Mar 22 02:48 .
  4 drwxr-xrwx 4 www-data www-data    4096 Dec 24  2017 ..
880 -rwxr-xr-x 1 root     root     1046528 Mar 22 02:48 db.sqlite3
  4 drwxr-xrwx 5 www-data www-data    4096 Mar  2 12:56 files
  4 drwxr-xrwx 7 www-data www-data    4096 Mar 26 22:13 front
  4 drwxr-xrwx 8 www-data www-data    4096 Jun 11 15:24 .git
  4 -rwxrwxr-x 1 username username    1218 Nov  8  2018 .gitignore
  4 -rwxrwxrwx 1 www-data www-data     800 Apr  3  2017 manage.py
  4 drwxr-xrwx 3 www-data www-data    4096 Mar 26 15:42 project
  4 -rwxrwxrwx 1 www-data www-data      56 Jun  2  2017 README.md
  4 -rw-rw-r-- 1 username username      49 Nov  8  2018 requirements.txt
  4 drwxrwxrwx 4 www-data www-data    4096 Jan 11  2017 static

Django 管理面板在用户登录管理面板时更新数据库(用于记录保存),如果无法执行此操作则会导致 500 错误。

要解决此问题,只需将所有权改回正常:

sudo chown www-data: db.sqlite3

相关内容