2015-02-11 37 views
4

我需要懂得linux的人的幫助。我無法將我的靜態文件推送到Heroku(我試圖使用whitenoise而不是Amazon S3或任何CDN)。該錯誤是相當簡單的,當我嘗試推到我的Heroku得到:Linux。 Heroku的,Django的。 Collectstatic只讀文件系統

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 

靜是父文件夾:靜態/資產。

那麼......我該如何解決這個問題?任何幫助將不勝感激。

回答

2

我不認爲問題是將內容推送到Heroku,特別是。您正在嘗試將資產保存到虛擬機上的根文件夾,這是您不允許執行的操作。

傳統上使用Heroku,您需要將靜態資產目錄設置爲staticfiles(而不是/staticfiles/assets)。當Heroku將應用程序部署到其虛擬機(它稱爲「dynos」)時,它會在它自己的小目錄(我認爲它是/app)中工作,因此您在settings.py文件中指定的所有目錄都與該目錄相關。

嘗試將靜態文件根目錄設置爲staticfilesassets而不使用斜線,並且應該起作用。