python - Linux。 Heroku-Django。 Collectstatic 只读文件系统

标签 python linux django heroku chmod

我需要了解 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 中指定的所有目录文件是相对于该目录的。

尝试将静态文件根目录设置为 staticfilesassets(不带斜线),应该可以。

关于python - Linux。 Heroku-Django。 Collectstatic 只读文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28445122/

相关文章:

django - django 应用程序的 azure 网站中的配置问题

python - 如何使用 statsmodels python 进行 2SLS IV 回归?

python - 在 Python matplotlib 中生成用户定义的颜色图

Python:用字符串中的标题名称替换网址

linux - AWK 使用的替代方案

Linux:允许一个用户管理来自另一个用户/组的所有文件

php - 如何将 php ext 目录保存在变量中?

python - stdout/stderr 元组或字符串输出

python - 根据请求方法应用装饰器

django - DRF CreateAPIView 中的条件语句