Linux操作系统。 Heroku的,Django的。 Collectstatic只读文件系统

时间:2015-02-11 01:35:09

标签: 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密钥。

我尝试从文件管理器更改文件夹的权限,我也尝试过bash:

sudo chmod 777 -R static

static是父文件夹:static / assets。

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

1 个答案:

答案 0 :(得分:3)

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

传统上使用Heroku,您可以将静态资源目录设置为staticfiles(不是/staticfiles/assets)。当Heroku将应用程序部署到其虚拟机(它称之为“dynos”)时,它在自己的小目录中运行(我认为它是/app),因此您在settings.py文件中指定的所有目录都是相对于那个目录。

尝试将静态文件根目录设置为staticfilesassets而不使用斜杠,这应该可以。