Railway.app не может найти статические файлы после развертывания приложения django
Я пытаюсь развернуть свое приложение на Railway.app. Приложение в целом работает, но статические файлы не найдены.
Я создал папку collectstatic с помощью команды django manage.py collectstatic
, как советуют в руководствах по развертыванию, но это не помогает.
Подскажите, что могло пойти не так?
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
папка staticfiles находится в директории, содержащей файл menage.py
развернуть журналы из railway.apps
Not Found: /staticfiles/style.css
Not Found: /staticfiles/base.css
Not Found: /staticfiles/MyImage.png
Not Found: /staticfiles/base.js
У меня была похожая проблема, я думаю, что это связано с Railway App, в итоге я использовал Cloudinary для хранения моих статических файлов
pip install django-cloudinary-storage
После этого добавьте cloudinary и cloudinary_storage к установленным приложениям в файле settings.py. Если вы собираетесь использовать этот пакет для статических и/или медиа файлов, убедитесь, что cloudinary_storage находится перед django.contrib.staticfiles:
INSTALLED_APPS = [
# ...
'cloudinary_storage',
'django.contrib.staticfiles',
'cloudinary',
# ...
]
Далее необходимо добавить учетные данные Cloudinary в settings.py:
CLOUDINARY_STORAGE = {
'CLOUD_NAME': 'your_cloud_name',
'API_KEY': 'your_api_key',
'API_SECRET': 'your_api_secret'
}
Затем запустить
python manage.py collectstatic --noinput
WhiteNoise работает для меня:
pip install whitenoise
В вашем settigs.py:
INSTALLED_APPS = [
'django.contrib.staticfiles',
'whitenoise.runserver_nostatic',
]
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware",
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_STORAGE="whitenoise.storage.CompressedManifestStaticFilesStorage"
если вы используете общую проверку .gitignore и убедитесь, что ваш статический файл передается в ваше репо, альтернатива - найти способ изменить скрипт по умолчанию, который railway запускает при развертывании, и заставить его выполнять createstatic