Я настраиваю Джанго под ключ решение, и оно отлично работает, если вы используете готовый проект Django, который они предоставляют. Но работать с ним сложно, и это нарушает многие правила и рекомендации, содержащиеся в документации Django, и включает в себя так много раздутий, что это ломается в момент обновления или установки нового пакета. Поэтому я пытаюсь настроить его так, чтобы я мог создать свой собственный проект Django с нуля с моими собственными путями к файлам.
Все мои базы данных, зависимости, пакеты и файлы Django находятся в рабочем состоянии в virtualenv, но когда я перехожу к редактированию файла конфигурации Apache с моими пользовательскими каталогами, он выдает ошибку 404.
Вот что я использую и версии:
sql_server.pyodbc
с участием ODBC Driver 17 for SQL Server
для MSSQLПримечание: В Turnkey 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 неверны или макет файла неправильный (возможно).
Извините за такой медленный ответ. Я подписан на тег "под ключ-linux", но почему-то не получил уведомление об этом ?! Я предполагаю, что вы, вероятно, уже ушли, но вот мой 2c:
Прежде всего стоит знать о нескольких вещах. Под капотом TurnKey находится Debian. Он немного изменен, и мы предоставляем несколько собственных пакетов, но в основном это Debian. В нашем устройстве Django мы устанавливаем Django из репозиториев Debian.
«Примерное» приложение TurnKey не должно быть чем-то большим, чем песочница, с которой можно поиграть (а также в качестве быстрого теста на дым, чтобы убедиться, что все на месте).
TBH, с предоставленной вами информацией действительно сложно даже догадаться, в чем может быть проблема. Вы должны хотя бы проконсультироваться со своим журналом apache (/var/log/apache2/error.log), и это, скорее всего, прояснит, что он не может найти (и, возможно, даже почему).
Я предполагаю, что вы ошиблись одним из своих путей. Или, может быть, это проблема с разрешениями? (То есть пользователь веб-сервера не имеет доступа к тому, к чему ему нужен доступ). Но я только догадываюсь ...