Почему css не загружается на моем сайте Fastcomet Django? - PullRequest
0 голосов
/ 17 января 2019

Статические файлы не загружаются на сайт django, развернутый на fastcomet, с cpanel

Сайт развернут и, похоже, хорошо работает в других отношениях, загружается из базы данных, перенаправляет на страницы, но не загружает CSS, JavaScript или изображения, это чистый HTML, я попытался изменить {% load static %} на {% load staticfiles %} на всех страницах, и наоборот, и установка прямой директории в папку staticfiles в файле настроек, она отлично работает на моем локальном хосте, я не знаю, в чем может быть проблема.

Статические и мультимедийные файлы в settings.py файле:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

файл wsgi.py

import os

from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE',
                      'aida_ganaderia_luz_y_sombra.settings')
application = get_wsgi_application()

passenger_wsgi.py

import os
import sys
sys.path.insert(0, os.path.dirname(__file__))

wsgi = imp.load_source('wsgi', 'aida_ganaderia_luz_y_sombra/wsgi.py')
application = wsgi.application

текущее состояние:

bare html

1 Ответ

0 голосов
/ 18 января 2019

Приятно встретить клиента здесь, в стеке :)!

Проблема, с которой вы столкнулись, действительно вызвана cPanel и тем, как он обрабатывает скрипты Python. Вероятно, у каждого провайдера веб-хостинга cPanel также будут, если не одинаковые, аналогичные проблемы, поэтому я считаю, что этот ответ может быть полезен для всех пользователей Python cPanel.

Я постараюсь, чтобы технический тон был более мягким, поскольку речь идет о довольно большом количестве технических предметов.

Начнем с объяснения того, как Python и cPanel работают вместе.

Когда вы создаете приложение на Python, cPanel создает две вещи:

  1. Виртуальная среда для вашего приложения
  2. .htaccess файл, который используется, чтобы сообщить веб-запросу, как подключиться к вашему приложению

Используя эту информацию, мы можем выделить две службы, которые принимают участие в общении между вашими посетителями и вашим приложением python - веб-служба и служба python.

Веб-служба просто сопоставляет ваш домен со сценарием запуска приложения python, используя файл .htaccess, хранящийся в корневом каталоге документа вашего домена, а затем служба python обрабатывает логику кода вашего приложения. Как только результат кода приложения готов, Python отправляет результат обратно в веб-сервис, который, наконец, отправляет его посетителю в виде простого HTML-файла. (Не так сильно отличается от того, как на самом деле работает php!)

Что происходит со статическими запросами файлов и почему они приводят к коду состояния 404?

Когда дело касается статических файлов, ситуация с ними другая. Сразу после отправки HTML-ответа вашему посетителю в его браузер загружается дерево HTML DOM.

Затем браузер запрашивает каждый статический ресурс, используемый на странице - изображения, js-файлы, css-файлы и так далее. Однако статические ресурсы не обрабатываются python, поэтому веб-сервер распознает запрос как простой, который не требует маршрутизации к вашему приложению python.

Другими словами, веб-сервер ожидает, что статические ресурсы находятся в корневом каталоге документов вашего домена. Однако это не так, поскольку корень документа, в котором развернуты все файлы приложения Python, отличается от корня документа, с которым настроен домен. Я знаю, это звучит сложно, но это действительно вопрос понимания технологии и настройки вашего приложения.

Как устранить ошибку и снова сделать приложение великолепным?

У вас есть два варианта здесь.

  1. Вы можете взять папку, содержащую ваши статические ресурсы, и развернуть ее в корневом каталоге документов вашего домена.

Например:


Основной домен для вашей учетной записи - example.com. Он настроен для работы с каталогом public_html (корнем документа) вашей учетной записи, который переводится по следующему абсолютному пути:

/home/user/public_html  

Ваше приложение на python развернуто в папке за пределами этой, например, MyPythonApp со следующим абсолютным путем:

/home/user/MyPythonApp 

Папка, содержащая ваши статические ресурсы, изначально находится в папке приложения python:

/home/user/MyPythonApp/static/

И запрос к статическому ресурсу, который приводит к ошибке 404, выглядит так:

GET http://example.com/static/styles.css

Просто переместив «статическую» папку из / home / user / MyPythonApp / static в / home / user / public_html /, вы разрешите запросу правильно извлечь ресурс.


  1. Вы можете изменить корневой каталог документа своего домена, чтобы он соответствовал папке, в которой развернуто приложение python.

Однако для выполнения этой задачи вам понадобится наша помощь, и для этого я хотел бы попросить вас отправить заявку в нашу группу технической поддержки, чтобы они могли помочь вам в этом. Если вы предпочитаете эту опцию, отправьте им ссылку на этот вопрос.

С наилучшими пожеланиями!

...