Невозможно загрузить stati c файлы в производство после пробного использования многочисленных решений - PullRequest
0 голосов
/ 23 января 2020

Я переместил свой django проект с разработки на свой производственный сервер. После развертывания я не могу просматривать файлы stati c на своих страницах.

Я знаю, что django не обслуживает файлы stati c после отключения отладки и пытался использовать whitenoise для обслуживания моих stati c файлы.

Попытка 1- WhiteNoise

Это изменения, которые я внес в settings.py

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

и wsgi.py:

from whitenoise.django import DjangoWhiteNoise
...
application = get_wsgi_application()
application = DjangoWhiteNoise(application)

, а затем запустить сборщик c. Однако мои веб-страницы все еще не загружали ни один из файлов stati c.

Попытка 2- Apache - mod_wsgi

Со второй попытки я попытался использовать apache + mod_wsgi Чтобы указать c Я подключился к своему VPS с помощью терминала в cpanel установил apache2 и следовал учебнику .

sudo apt-get install apache2

создал мой файл конфигурации

sudo nano new_config.conf

добавил это к нему

<VirtualHost *:80>
        ServerName 127.0.0.1
        ServerAlias localhost

        Alias /static /var/gradientboostmvp/static/
        WSGIScriptAlias / /var/gradientboostmvp/django_school/wsgi.py

        <Directory /var/gradientboostmvp/>
                Order deny,allow
                Allow from all
        </Directory>

        DocumentRoot /var/gradientboostmvp
</VirtualHost>

включен Недавно созданный файл конфигурации виртуального хоста

sudo a2ensite new_config.conf
sudo /etc/init.d/apache2 restart

добавил мой WSGIPythonPath в apache2.config

WSGIPythonPath /var/gradientboostmvp

, сохранил изменения, но все еще не смог загрузить мои stati c файлы

Попытка 3 - Импортная подача

У меня также был похожий вопрос, который был закрыт как дубликат. Я попробовал решения, предложенные в ответах

from django.views.static import serve
...
urlpatterns = [
    path('', classroom.home, name='home'),
    path('about', classroom.about, name='about'),
    path('courses', classroom.courses, name='courses'),
    path('course_details', classroom.course_details, name='course_details'),
    path('static',serve {'document_root':settings.STATIC_ROOT}),

, что привело к тому, что я получил сообщение об ошибке при попытке посетить домашнюю страницу

Неполный ответ получено из заявки

1 Ответ

0 голосов
/ 23 января 2020

Ну, так как вы используете Apache для обслуживания django, то почему бы не использовать его и для хранения c файлов. Согласно documetation, сначала вам необходимо использовать collectstatic для хранения файлов * stati c с указанным значением c папка. Например, в ваших настройках, если у вас есть STATIC_ROOT, указанный как:

STATIC_ROOT = '/path/to/mysite.com/static/'

Затем, когда вы запускаете сбор данных stati c, stati c файлы будут храниться в каталоге /path/to/mysite.com/static/.

Затем добавьте этот путь в качестве псевдонима к apache:

Alias /static/ /path/to/mysite.com/static/
...