【发布时间】:2011-12-28 05:38:23
【问题描述】:
我正在使用 capistrano 将我的应用程序部署到我的新 Rails 3.1 服务器。
当我尝试浏览该页面时,出现 rails 错误。
在查看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 文件夹中的文件没有“正确”权限。示例:
root@Ubuntu:/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 配方中,但这似乎是一个丑陋的 hack。
为什么 /tmp 文件夹在部署后没有“正确”权限,我该如何解决?
【问题讨论】:
-
你是通过root用户部署的吗?如果是这样,您可能需要重新考虑。
-
我听说这很糟糕 :) 但是只是更改用户也会遇到同样的问题,对吧?
标签: ruby-on-rails-3 permissions sprockets