部署 利用又拍云 CDN 自动部署 Assets 文件

huacnlee · 2012年05月10日 · 最后由 MaFai 回复于 2014年03月19日 · 6596 次阅读

一直一来都没有把 Assets 文件放到 CDN 上面,今天突然想到,又拍云存储是支持 FTP 的,也就是说,完全可以在 rake assets:precompile 完了以后,用 FTP 把编译好的资源文件直接同步到 UpYun 上面去。

于是动手尝试,很快搞定了,用了 @ashchan 大哥写的 ftpsync

具体参见这个 commit:

https://github.com/ruby-china/ruby-china/commit/d050f7f8b7441fbd88671e0008205f4ccffca8b5

ftp_sync 这个好几年前写的东西居然还能发挥一点余热:)

这个策略跟很多方法都很不错啊!(最近有一个根据 git hook 来部署 assets 的方法)

顺便提一下一个 Rails 3.2 以后 Nginx 配置的小技巧 可以看到 public/assets 目录里面有很多 .gz 的文件,这个是预先 gzip 的结果,然后你可以在 Nginx 上面这样配置:

location /assets {
  gzip_static on;
}

以后 gzip 这个动作就会直接用 .gz 的文件来代替,节省 CPU

参见: http://guides.rubyonrails.org/asset_pipeline.html#server-configuration

在回复里上传的图片也是这么进 cdn 的么..?

@ruohanc 那个是直接上传的

已经给 Ruby China 部署上了,效果很明显呀

我在本地会什么会报错? upload file: /opt/Sites/ruby-china/public/assets/sprites/small/liked.png upload file: /opt/Sites/ruby-china/public/assets/sprites/small/lock.png Failed: 550 No such directory. 传了一部分上去就

最后那个 550 的错误可以忽略,好像是 . 这个目录的问题

明白了 文件太多 我还以为有文件名导致的没传成功呢

#2 楼 @huacnlee 这个第一次知道,有用啊

从 ftp 下载文件目录也参考了这份代码,谢谢

11 楼 已删除

谢谢分享,更好有用

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