我需要了解linux的人的帮助。我无法将我的静态文件推送到Heroku(我正在尝试使用whiteoise,而不是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密钥。
我尝试过从文件管理器更改文件夹的权限,也尝试过从bash:
sudo chmod 777 -R static
static是父文件夹:static/assets。
所以。。。我该如何解决这个问题?任何帮助都将不胜感激。
我认为问题不在于将内容推送到Heroku。您正试图将资产保存到虚拟机上的根文件夹中,这是不允许的。
传统上,使用Heroku,您会将静态资产目录设置为类似staticfiles
的目录(而不是/staticfiles
或/assets
)。当Heroku将应用程序部署到其虚拟机(它称之为"dynos")时,它在自己的小目录(我认为它是/app
)中工作,因此您在settings.py文件中指定的所有目录都是相对于该目录的。
尝试将静态文件的根目录设置为不带斜线的staticfiles
或assets
,这应该有效。