Проблема доступа к статическим файлам и носителям при развертывании приложения 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. Проблема решена.