【问题标题】:Rails 3.1 Deploy to Production (with Apache & Passenger) Asset ProblemsRails 3.1 部署到生产(使用 Apache 和Passenger)资产问题
【发布时间】:2011-12-16 17:52:08
【问题描述】:

Rails 3.1 改变了它处理资产管道的方式,并在部署到生产环境时引发了问题。

我正在使用 Apache 和 Passenger,它们似乎工作正常。

我的作品是这样设置的(现在)。

# congif/environments/production.rb
config.cache_classes = false
config.consider_all_requests_local       = true
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache

我在 Ubuntu 上运行 rake assets:precompile 并启动服务器。没事了。我的图片都没有加载。

传说中的“我在这个 URL 找不到图片”框。

我在 CentOS 上运行 rake assets:precompile 并启动服务器。还有……权限错误。

*Error Compiling CSS Asset*
Errno::EACCESS: Permission Denied - [app path]/tmp/cache/assets/E95
[path to RVM Ruby]/fileutils.rb:243:in 'mkdir'

我不能让它让步。任何帮助是极大的赞赏。谢谢!

更新

这个解决方案每次都对我有用:

首先清理你的资产

rm -rf public/assets

rake assets:clean RAILS_ENV=production

其次,在#production.rb 中改变

config.assets.compile = false

config.assets.compile = true

第三,运行预编译你的资产

rake assets:precompile RAILS_ENV=production

第四,在#production.rb 中改变

config.assets.compile = true

返回

config.assets.compile = false

第五,通过运行重启你的服务器:

touch tmp/restart.txt

第六,通过运行此命令取消对新创建资产的权限限制

chmod -R 777 公共/资产

第七个,庆祝!!

【问题讨论】:

    标签: ruby-on-rails apache deployment production assets


    【解决方案1】:

    这是一个简单的权限问题。授予服务器/守护进程在 [app_path]/tmp 中递归创建文件的权限。

    假设您的服务器进程与您使用的 www-data 用户一起运行:

    cd APP_PATH
    chmod -R u+w tmp
    

    如果目录不属于用户,则必须更改所有权:

    chown -R www-data tmp
    

    【讨论】:

    • 我试过了,但它仍然在与同样的错误作斗争。我在 CentOS 上,而 www-data 不是有效用户。我尝试了apache用户。更新:我做了 chown -R 755 tmp 并且成功了!
    • 好的,你修复了我的 CentOS 错误,Michael de Silva 修复了我的 Ubuntu 错误。谢谢大家!
    • 如何在 Heroku 上执行此操作?我也有同样的问题,图片给了我访问被拒绝的待遇
    • 我在本地进行了更改并将其推送到 heroku。现在一切正常
    【解决方案2】:

    尝试通过 sudo 创建 public/assets 或尝试执行 rvmsudo rake assets:precompile - 本质上,它无法在您的服务器上创建目录 - 因此出现错误。

    【讨论】:

    • 好的,你修复了我的 Ubuntu 错误,topek 修复了我的 CentOS 错误。谢谢大家!
    【解决方案3】:

    在 Windows 8 上:

    1. 删除对样式表的引用
    2. 重启生产
    3. 使用浏览器转到受影响的页面
    4. 向后添加样式表引用
    5. 重启生产
    6. 为我工作!

    【讨论】:

      【解决方案4】:

      您更新的解决方案对我不起作用。 我在 Rails 4.2 上,css 和 js 仅在我设置时才有效 config.serve_static_files = true (不推荐,但这是我可以在这里工作的唯一方法)。

      【讨论】:

      • 这似乎不是answer。这可能最好作为评论发布。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多