2011-12-27 68 views
1

我正在使用capistrano將我的應用部署到我的新Rails 3.1服務器。Rails 3.1 - 與capistrano部署後的權限

當我試圖瀏覽該頁面時,出現導軌錯誤。
雖然看在error.log,這是我所看到的:

ActionView::Template::Error (Permission denied - /var/www/episodecalendar/production/releases/20111227204950/tmp/cache/55B): 
    32:     </div> 
    33:     <div id="footer"> 
    34:     <div id="footer_content"> 
    35:      <% cache("footer") do %> 
    36:    <%= render :partial => "partials/footer" %> 
    37:    <% end %> 
    38:    </div> 
    app/views/layouts/application.html.erb:35:in `_app_views_layouts_application_html_erb___3483336897212790867_58416560' 

顯然,在/tmp文件夾中的文件沒有「正確」的權限。例如:

[email protected]:/var/www/episodecalendar/staging/current/tmp/cache/assets/C0C/690# ls -la 
total 12K 
drwxr-xr-x 2 root root 4.0K 2011-12-27 21:33 . 
drwxr-xr-x 3 root root 4.0K 2011-12-27 21:33 .. 
-rw-r--r-- 1 root root 2.6K 2011-12-27 21:33 sprockets%2F31007441199035e09c0c45c33930cf06 

解決它的唯一辦法,是chmod 777 tmp/ -R,然後將網站加載立竿見影。

我可以把chmod修復程序放在capistrano的配方中,但這看起來像一個醜陋的黑客。
爲什麼部署後/ tmp文件夾不具有「正確」權限,我該如何解決?

+1

您是否通過root用戶進行部署?如果是這樣,你可能想重新考慮這一點。 – 2011-12-27 21:26:20

+0

我聽說這很糟糕:)但只是改變用戶會有同樣的問題,對不對? – Frexuz 2011-12-27 21:31:17

回答

2

而不是允許內TMP chmod 777 -R tmp/的所有文件和文件夾的所有人的訪問,你可能要考慮確保/var/www/episodecalendar/staging/是遞歸chown'dchown -R user:group /var/www/episodecalendar/staging)由任何用戶需要訪問運行Web服務器。

我建議創建一個單獨的[email protected]用戶,以便(不同於root)權限問題變得很快顯而易見。

+0

完全合作。但我不確定爲什麼不同於root的用戶會突然擁有更多正確的權限? – Frexuz 2011-12-27 22:48:39