Как обслуживать статические файлы для django-cms на DigitalOcean?
Я развернул приложение django-cms на DigitalOcean, следуя шагам в этом руководстве:
https://www.digitalocean.com/community/tutorials/how-to-deploy-django-to-app-platform
Приложение работает, но статические файлы не обслуживаются.
Я создал дополнительный статический сайт, ссылающийся на тот же репозиторий GitHub, и он тоже работает.
settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATICFILES_DIRS = [
BASE_DIR / "project_name" / "static",
]
Я собрал статические файлы с помощью python manage.py collectstatic
, и папка и файлы находятся в нужном месте.
Как мне "подключить" приложение на DigitalOcean к моим статическим файлам?
Убедитесь, что вы добавили два отдельных сервиса в DigitalOcean. Один сервис должен использоваться для обслуживания HTTP-запросов по корневому URL /
с помощью Python. Другой сервис должен использоваться для обслуживания URL /static
из каталога staticfiles
в качестве выходного каталога.
Решение с помощью Whitenoise:
https://whitenoise.readthedocs.io/en/stable/django.html
Change settings.py
INSTALLED_APPS = [
...
'whitenoise.runserver_nostatic', # Above 'django.contrib.staticfiles'
'django.contrib.staticfiles',
'django.contrib.sites',
...
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', # Here
'django.contrib.sessions.middleware.SessionMiddleware',
...
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATICFILES_DIRS = [
BASE_DIR / "project_name" / "static",
]
# Whitenoise
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
и запустите python manage.py collectstatic
на сервере.
Это может и не решение вопроса, но работает как шарманка!