Heroku 不会在 Django 中收集静态数据,但会告诉它会收集静态数据
Heroku doesn't collect static on Django but tell that it does
命令heroku run python manage.py collectstatic
returns我这样
163 static files copied to '/app/live-static-files/static-root',
509 post-processed.
这是我的设置:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', # White Noise
'django.contrib.sessions.middleware.SessionMiddleware',
...
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "live-static-files", "static-root")
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "live-static-files", "media-root")
DISABLE_COLLECTSTATIC = 0
通过 heroku run bash
我去 /app/live-static-files/static-root
并看到它是空的(该文件夹存在,因为它在 .gitkeep 的 repo 中)并且服务器对所有请求给出 500 错误。
现在 heroku run bash
我尝试 python manage.py collectstatic
并且成功了!但是在 heroku restart
之后它又是空的。
为什么 Heroku 告诉它它复制了 statics,甚至告诉 statics 文件夹的正确路径但实际上并没有这样做?为什么它实际上不这样做?
Heroku 文件系统是短暂的 - 这意味着在 dyno 运行 期间对文件系统的任何更改只会持续到该 dyno 关闭或重新启动。每个 dyno 都使用最近部署的文件系统的干净副本启动。这类似于有多少基于容器的系统,例如Docker,运行。
此外,在正常操作下,dynos 将在称为“循环”的过程中每天重新启动。
阅读这些文章:
https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted
命令heroku run python manage.py collectstatic
returns我这样
163 static files copied to '/app/live-static-files/static-root',
509 post-processed.
这是我的设置:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', # White Noise
'django.contrib.sessions.middleware.SessionMiddleware',
...
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "live-static-files", "static-root")
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "live-static-files", "media-root")
DISABLE_COLLECTSTATIC = 0
通过 heroku run bash
我去 /app/live-static-files/static-root
并看到它是空的(该文件夹存在,因为它在 .gitkeep 的 repo 中)并且服务器对所有请求给出 500 错误。
现在 heroku run bash
我尝试 python manage.py collectstatic
并且成功了!但是在 heroku restart
之后它又是空的。
为什么 Heroku 告诉它它复制了 statics,甚至告诉 statics 文件夹的正确路径但实际上并没有这样做?为什么它实际上不这样做?
Heroku 文件系统是短暂的 - 这意味着在 dyno 运行 期间对文件系统的任何更改只会持续到该 dyno 关闭或重新启动。每个 dyno 都使用最近部署的文件系统的干净副本启动。这类似于有多少基于容器的系统,例如Docker,运行。
此外,在正常操作下,dynos 将在称为“循环”的过程中每天重新启动。
阅读这些文章:
https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted