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

sefier · 2013年07月01日 · 最后由 sefier 回复于 2013年07月02日 · 4007 次阅读

简单地安装完 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 访问,算是跳过这个问题了吧,不过这个问题还是很困扰我。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号