微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails 3.1部署到生产(使用Apache和Passenger)资产问题

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

我运行rake资产:在Ubuntu上预先编译并启动服务器.没有什么.我的图像都不加载.

传说中的“我在这个网址找不到图像”框.

我运行rake资产:在CentOS上预编译并启动服务器.而…权限错误.

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

我不能让它发抖.任何帮助是极大的赞赏.谢谢!

UPDATE

这个解决方案每次都为我工作:

首先清理你的资产

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公共/资产

第七,庆祝!

解决方法

这是一个简单的权限问题.给服务器/守护进程以[app_path] / tmp递归创建文件的权利.

假设您的服务器进程与www数据用户一起运行,您可以执行以下操作:

cd APP_PATH
chmod -R u+w tmp

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

chown -R www-data tmp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐