我需要了解 linux 的人的帮助。我无法将我的静态文件推送到 Heroku(我正在尝试使用 whitenoise 而不是 Amazon S3 或任何 CDN)。错误很简单,当我尝试推送到 heroku 时,我得到:
Preparing static assets
Running collectstatic...
Traceback (most recent call last):
OSError: [Errno 30] Read-only file system: '/assets'
因此,我无法运行 collectstatic,因为我没有权限。如果我执行 sudo git push heroku master
我会收到另一个错误:Permission denied (publickey)
我猜这是因为“sudo”使用了不同的 SSH key 。
我尝试从文件管理器更改文件夹的权限,我也尝试从 bash:
sudo chmod 777 -R static
static 是父文件夹:static/assets。
那么...我该如何解决这个问题?任何帮助将不胜感激。
最佳答案
我不认为问题特别在于将内容推送到 Heroku。您正在尝试将 Assets 保存到虚拟机上的根文件夹中,而您不允许这样做。
传统上,对于 Heroku,您会将静态 Assets 目录设置为类似 staticfiles
的目录(而不是 /staticfiles
或 /assets
)。当 Heroku 将应用程序部署到其虚拟机(它称为“dynos”)时,它在自己的小目录(我认为是 /app
)中工作,因此您在 settings.py 中指定的所有目录文件是相对于该目录的。
尝试将静态文件根目录设置为 staticfiles
或 assets
(不带斜线),应该可以。
关于python - Linux。 Heroku-Django。 Collectstatic 只读文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28445122/