Apache2: 'AH01630: client denied by server configuration' with referer?
Я пытаюсь создать сайт django, но по какой-то причине, когда я пытаюсь получить доступ к странице администратора, она отображается без CSS, я копнул немного дальше и убедился, что мои права на файлы правильные, просто сделав весь каталог проекта доступным для всех
chmod -R 777 ./survey_server
Но он все еще не работает по какой-то причине, я не уверен, что происходит. Я проверил, перепроверил и трижды проверил свой конфигурационный файл apache безрезультатно.
Вот мой конфигурационный файл:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
# ServerName crimjusticesurvey.org
ServerAdmin webmaster@crimjusticesurvey.org
DocumentRoot /home/ubuntu/Workspace/github/crimjusticesurvey/survey_server
<Directory /home/ubuntu/Workspace/github/crimjusticesurvey/survey_server>
Require all granted
</Directory>
<Directory /home/ubuntu/Workspace/github/crimjusticesurvey/survey_server/survey>
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
Alias /static /home/ubuntu/Workspace/github/crimjusticesurvey/survey_surver/survey/static
<Directory /home/ubuntu/Workspace/github/crimjusticesurvey/survey_server/survey/static>
Require all granted
</Directory>
<Directory /home/ubuntu/Workspace/github/crimjusticesurvey/survey_server/survey/survey>
AllowOverride all
Require all granted
Options FollowSymlinks
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess crimjusticesurvey.org python-path=/home/ubuntu/Workspace/github/crimjusticesurvey/survey_server/survey python-home=/home/>
WSGIProcessGroup crimjusticesurvey.org
WSGIScriptAlias / /home/ubuntu/Workspace/github/crimjusticesurvey/survey_server/survey/survey/wsgi.py
</VirtualHost>
Когда я пытаюсь зайти на сайт, в журнале ошибок появляется вот это.
[Sat Jan 22 08:58:40.962293 2022] [authz_core:error] [pid 2964:tid 140063337850624] [client ...]
AH01630: client denied by server configuration:
/home/ubuntu/Workspace/github/crimjusticesurvey/survey_surver, referer: http://crimjusticesurvey.org/admin/
Когда я захожу на сайт, он выглядит следующим образом:
Я видел, что в другом сообщении упоминался сбор статических файлов, что я и сделал с помощью python manage.py collectstatic безрезультатно, сам сбор файлов был успешным, но есть другая основная проблема, и я понятия не имею, что это такое.
Да, такая же проблема у меня возникла при развертывании проекта Django на Apache/Nginx
Я обнаружил, что добавление следующей строки в urls.py проекта и перезапуск сервера сделали свое дело
from django.views.static import serve
from django.conf import settings
urlpatterns = [
.... ,
.... ,
url(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}),
]
Обязательно добавьте STATIC_ROOT в ваш settings.py основной каталог статических файлов, который был создан после выполнения команды python manage.py collectstatic
Логика добавления этого заключается в том, что Django необъективен при обслуживании статических файлов, на локальном, поскольку он работает на собственном сервере, он знает, где может находиться статический файл, и автоматически обрабатывает их для вас
Но здесь, на другом сервере, вам нужно сообщить Apache/Nginx URL статических файлов, а также указать им, как работать со статическими файлами
