2011-12-27 205 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