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), и это, скорее всего, прояснит, что он не может найти (и, возможно, даже почему).

Я предполагаю, что у вас неверный путь. Или, возможно, это проблема с разрешениями? (Т.е. пользователь веб-сервера не имеет доступа к тому, к чему ему нужен доступ). Но я только догадываюсь...

Другие вопросы по тегам