Django под ключ скинул 404 с измененным конфигурационным файлом apache
Я настраиваю решение под ключ для Django, и оно отлично работает, если вы используете предварительно созданный проект Django, который они предоставляют. Но работать с ним сложно и нарушает многие правила и руководящие принципы, изложенные в документации Django, и включает в себя столько вздора, что он нарушает момент обновления или установки нового пакета. Поэтому я пытаюсь настроить его так, чтобы я мог создать свой собственный проект Django с нуля, используя собственные пути к файлам.
Все мои базы данных, зависимости, пакеты и файлы Django находятся в рабочем состоянии в пределах virtualenv, но когда я иду редактировать свой конфигурационный файл Apache с моими пользовательскими каталогами, он выдает 404.
Вот что я использую и версии:
- PuTTy, SSH на сервер (Windows 10 --SSH-> Linux)
- virtualenv, содержит проект Django и несколько пакетов
- Джанго (2, 1, 6, "финал", 0)
- Python 3.6.8
- GNU/Linux 9.6 под ключ
sql_server.pyodbc
сODBC Driver 17 for SQL Server
для MSSQL
Примечание. В Django под ключ файлы конфигурации Apache немного отличаются от стандартных Apache. 000-default.conf ничего не делает в Django под ключ.
Поэтому, когда я меняюсь django.conf
в /root/etc/apache2/sites-available
из дефолта:
serverName localhost WSGIScriptAlias / /var/www/turnkey_project/turnkey_project/wsgi.py WSGIPythonPath /var/www/turnkey_project WSGIDaemonProcess django processes=1 threads=3 WSGIProcessGroup django <VirtualHost *:80> UseCanonicalName Off ServerAdmin webmaster@localhost DocumentRoot /var/www/turnkey_project/static </VirtualHost> <VirtualHost *:443> SSLEngine on ServerAdmin webmaster@localhost DocumentRoot /var/www/turnkey_project/static </VirtualHost> Alias /static /var/www/turnkey_project/static <Location "/static"> SetHandler None </Location> Alias /doc /usr/share/doc/python-django-doc/html <Location "/doc"> SetHandler None </Location>
То, что я предполагал, будет работать с моими собственными путями к файлам, но не:
ServerName localhost WSGIScriptAlias / /var/www/sys/main/wsgi.py WSGIPythonPath /var/www/sys WSGIDaemonProcess django processes=1 threads=3 WSGIProcessGroup django <VirtualHost *:80> UseCanonicalName Off ServerAdmin webmaster@localhost DocumentRoot /var/www/sys/static </VirtualHost> <VirtualHost *:443> SSLEngine on ServerAdmin webmaster@localhost DocumentRoot /var/www/sys/static </VirtualHost> Alias /static /var/www/sys/static <Location "/static"> SetHandler None </Location> Alias /doc /var/www/sys/doc/html <Location "/doc"> SetHandler None </Location>
Итак, почему он выбрасывает 404, когда я перехожу к своему IP? Я неправильно его настраиваю или "под ключ" слишком ограничен? Кажется, все в рабочем состоянии, но просто не хочет работать.
У меня есть приложение в моем проекте Django, и для тех, кто знаком с Django, и его шаблоны URL будут знать, что он автоматически изменит URL с foo.com/bar
в foo.com/bar/
(обратите внимание на суффикс "/"). Когда я "перехожу" к своему приложению, оно автоматически применяет это изменение, возможно, предполагая, что Django работает должным образом, но, возможно, мои каталоги в моем конфиге apache неправильны или мой формат файла неправильный (возможно).
0 ответов
Извините за такой медленный ответ. Я подписан на тэг "под ключ-linux", но по какой-то причине не получил уведомление об этом?! Я предполагаю, что вы, вероятно, уже продвинулись, но вот мой 2c:
Прежде всего, стоит знать о нескольких вещах. Под капотом TurnKey находится Debian. Он немного подправлен, и мы предоставляем несколько наших собственных пользовательских пакетов, но в основном это Debian. В нашем устройстве Django мы устанавливаем Django из репозиториев Debian.
Приложение TurnKey "пример" не предназначено для того, чтобы быть чем-то большим, чем просто песочницей (а также быстрым тестом на дым, чтобы убедиться, что все на месте).
TBH, с информацией, которую вы предоставили, очень трудно даже догадаться, в чем может быть проблема. Вы должны, по крайней мере, обратиться к вашему журналу apache (/var/log/apache2/error.log), и это, скорее всего, прояснит, что он не может найти (и, возможно, даже почему).
Я предполагаю, что у вас неверный путь. Или, возможно, это проблема с разрешениями? (Т.е. пользователь веб-сервера не имеет доступа к тому, к чему ему нужен доступ). Но я только догадываюсь...