Linux。Heroku-Django。收集静态只读文件系统

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。

那么......我该如何解决这个问题?任何帮助将不胜感激。

Ste*_*man 4

我认为问题不在于将内容推送到 Heroku。您正在尝试将资源保存到虚拟机上的根文件夹中,但您不允许这样做。

传统上,使用 Heroku,您会将静态资产目录设置为类似staticfiles(not/staticfiles/assets) 的内容。当 Heroku 将应用程序部署到其虚拟机(称为“dynos”)时,它在自己的小目录中工作(我认为是/app),因此您在 settings.py 文件中指定的所有目录都是相对于该目录的。

尝试将静态文件根目录设置为带staticfilesassets不带斜杠,这应该可行。