部署 安装 ruby-china 时,运行在 production 模式下,无法访问静态资源

sefier · July 01, 2013 · Last by sefier replied at July 02, 2013 · 3992 hits

简单地安装完 ruby-china,用 development 模式访问,一切正常,使用 production 模式,发现无法加载静态资源,如 CSS/JS 等,查看源代码,发现使用了 CDN,于是修改了 upload_url 为本地的连接,发现访问的 CSS/JS 文件的结果是一个空 content 的 200。

尝试在 public 目录下建立一个 test.html,访问http://localhost:3000/test.html0的200,返回的结果也是长度为 reponse.

请问这是怎么回事呢?(测试 unicorn/thin 均是这个结果)

#2 楼 @yesmeck 是的,我部署的地址是http://sjyyt.com:3000,可以帮忙看下什么问题吗?

貼 log,目測是 memcached 沒啟動,感覺是月經貼了。

#4 楼 @yesmeck memcached 启动了的,这跟 memcached 有关系吗?现在是访问 public 目录下面的任何一个文件,返回的是空结果的 200,我不明白这个 thin/unicorn 是怎么回事,直接读取 public 目录下的文件不就行了吗?

貼 log 呀

#6 楼 @yesmeck 我是 rails 新手,请问是哪里的 log?控制台的是吗?我看过了,访问资源文件时,控制台没有任何反应。

在 log/production.log

#8 楼 @yesmeck ,我已将将日志传到http://cdn.test3g.com/production.log了,敬请查阅

唔,如果你用 unicorn 直接跑的話要把 config/environments/produciton.rb 裏的 config.serve_static_assets 設成 true

#10 楼 @yesmeck 这个值是 true,日志你也看到了。现在根本的问题是,启动之后,如果直接访问 public 目录下存在的文件,不管是什么内容,一律返回一个空的 200 结果,我建立了一个 test.html 文件测试过了。所以我感觉好像就没经过 rails 处理,这个 thin/unicorn 服务器为什么对 public 里面的文件直接给清空了啊?不懂。

你這個日志有點怪,裏面只有一個 home.css,也沒 js,assets:precompile 了嗎?

而且也不應該是 home.css 啊,home-db7695ef6de9d9eefef8a96dd3b02459.css 這樣才對。。。。

#13 楼 @yesmeck 这是测试一下 home.css 是不是好的,这个是好的,但是编译到 public 里面之后就不行了。而且这个编译之后的文件确实是存在的,因为返回的是 200 的空结果,如果不存在,那就是 404 了。现在的问题是,public 里面存在的文件,一律被清空了再返回。。。诡异!

也就是說你裏面放的 test.html 裏的內容也會被自動清空?

这个问题我没法解决,不过我现在用 nginx 做前端,静态文件直接由 nginx 访问,算是跳过这个问题了吧,不过这个问题还是很困扰我。

You need to Sign in before reply, if you don't have an account, please Sign up first.