Ale*_*lla 5 python linux django heroku chmod
我需要了解 linux 的人的帮助。我无法将我的静态文件推送到 Heroku(我正在尝试使用白噪声而不是 Amazon S3 或任何 CDN)。错误很简单,当我尝试推送到 heroku 时,我得到:
Preparing static assets
Running collectstatic...
Traceback (most recent call last):
OSError: [Errno 30] Read-only file system: '/assets'
Run Code Online (Sandbox Code Playgroud)
所以,我不能运行 collectstatic 因为我没有权限。如果我这样做,sudo git push heroku master我会收到另一个错误:Permission denied (publickey)我猜这是因为“sudo”使用了不同的 SSH 密钥。
我尝试从文件管理器更改文件夹的权限,我也尝试从 bash:
sudo chmod 777 -R static
Run Code Online (Sandbox Code Playgroud)
static 是父文件夹:static/assets。
那么......我该如何解决这个问题?任何帮助将不胜感激。
我认为问题不在于将内容推送到 Heroku。您正在尝试将资源保存到虚拟机上的根文件夹中,但您不允许这样做。
传统上,使用 Heroku,您会将静态资产目录设置为类似staticfiles(not/staticfiles或/assets) 的内容。当 Heroku 将应用程序部署到其虚拟机(称为“dynos”)时,它在自己的小目录中工作(我认为是/app),因此您在 settings.py 文件中指定的所有目录都是相对于该目录的。
尝试将静态文件根目录设置为带staticfiles或assets不带斜杠,这应该可行。