Назад | Перейти на главную страницу

Django на Apache выдает ошибку 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 ничего не изменилось).

Сообщения об ошибках вводили в заблуждение. Фактическая причина ошибки заключалась в том, что база данных сервера обслуживалась sqlite, и файл получил неправильное право собственности во время обновления. Теперь он принадлежал root и не был доступен для записи пользователем Django 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