Проблема доступа к статическим файлам и носителям при развертывании приложения Django в производственной среде

При развертывании приложения django в производственной среде на сервере openlitespeed, статические файлы и медиа файлы не найдены. Приложение нормально работает в локальной среде разработки, но после загрузки на сервер статическое содержимое и медиафайлы недоступны.

Я обновил свой статический url следующим образом:

STATIC_URL = '/public/static/'
STATIC_ROOT = '/home/domain.com/app/public/static

Где app - местоположение проекта. Я получаю 404 ошибку для всех статических и медиа файлов:

Failed to load resource: the server responded with a status of 404 ()

Когда я пытаюсь collectstatic я получаю следующую ошибку на терминале:

django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.

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

В конце вашего кода не хватает инвертированной запятой

STATIC_ROOT = '/home/domain.com/app/public/static

должно быть

STATIC_ROOT = '/home/domain.com/app/public/static'

Я предполагаю, что пропущенный апостроф - это просто missclick здесь в SO, если он работал в разработке. Вот как вы должны обрабатывать STATIC_ROOT в Django >= 4.0:

STATIC_ROOT = BASE_DIR / 'app/public/static'

Старые версии:

STATIC_ROOT = os.path.join(BASE_DIR, 'app/public/static')

Проблема решена:

STATIC_ROOT = BASE_DIR / 'app/public/static'

Я обновил соглашение static_root согласно Django >= 4.0 и на сервере openlitespeed каждое статическое содержимое должно быть размещено в папке /public, что является обязательным правилом, если мы не редактируем конфигурацию по умолчанию. Я создал папку /public и переместил туда папки static и media. А затем сделал collectstatic. Проблема решена.

Вернуться на верх