我的七牛参赛作品

使用Ocopress写博客将近一年多了,大概几个月前同事给我推荐了七牛做网站的静态文件存储服务,于是果断尝试了一下,发现真实不错。速度不错,而且有免费套餐。很是支持。最近发现七牛有一个demo大赛,于是果断参加了。

痛点

  • 域名Godaddy购买,无法备案,不能使用七牛的独立域名绑定
  • 服务器为github pages, 有300M空间限制,所以只能把静态文件放到七牛
  • 每次写带图片等资源的博客,都需要先上传到七牛,然后得到外链地址,贴回到博客,过于繁琐啦。

解决思路

由于ocotpress程序是将markdown文档转换成纯静态的HTML网页,我们可以在这个转换过程之前或者期间将图片等资源自动上传到七牛服务器,然后替换这些资源的地址为已上传文件的外链。

实现细节

  • 通过rb-inotify检测文件变化,新文件会直接上传,已经上传过的文件则覆盖更新。避免在生成html网页时大量拥挤上传
  • 进行rake generate时,对没有上传的文件进行上传
  • 通过sqlite数据库,记录文件路径和最后修改时间进行验证。

好处

  • 节省了博客在github中的空间占用,让github空间限制几乎不再存在。只剩纯文本了,能占用多少空间
  • 提高了在国内的访问的速度
  • 使用更多的七牛的服务,比如防盗链等功能。

安装

如果尚未安装Octopress,请参考本文安装。

超级简单的一步安装

1 2

cd YOUR_OCTOPRESS_ROOT_DIR curl -o /tmp/install.sh https://gitcafe.com/androidyue/octopress_qiniu/raw/master/install.sh && bash /tmp/install.sh

配置文件

安装过程中,会使用vi打开一个配置文件,文件内容为,文件路径位于家目录下的.qiniu.ini。按照自己的实际情况填写配置即可。

1 2 3 4 5 6 7 8 9 10 11 12 13 14

#Qiniu Config File #Project [octopress] #Your Bucket to Store Images In Octopress image_bucket = "your_bucket" #Your Image Folder Path to store the files locally. Usually it's #{OCTORESS_DIRECTORY}/public/images/ image_dir = "image_dir_in_octopress" #Auth Info #Generate two following two keys in Qiniu Web Portal [auth] access_key = "your_access_key" secret_key = "your_secret_key"

启动程序

配置完成,轻松执行一个脚本就可以启动监控文件变化自动上传的程序了。当检测目录有文件变化时就会自动上传到七牛的文件服务器。

1

YOUR_OCTOPRESS_ROOT_DIR/startQiniu.sh

文件介绍

1 2 3 4 5 6 7 8 9 10 11 12 13 14

. |-- install.sh #快捷安装脚本 |-- octopress #覆盖octopress程序的目录 | `-- plugins | `-- image_tag.rb # 覆盖Octopress 程序自带的image_tag,实现图片上传到七牛 |-- qiniu #工具程序的主目录 | |-- qiniuCLI.rb #命令行工具,这个工具是所有上传下载请求的对外处理程序,本工具中所有的请求都是直接调用这个工具。 | |-- .qiniu_config_template.ini #配置文件模板,不要对这个文件直接配置,请使用家目录下的.qiniu.ini进行配置 | |-- qiniuCore.rb #最主要的处理脚本。支持从ini文件读取配置,数据库存储文件的上传信息,调用七牛的SDK来完成文件的上传和下载。 | |-- .qiniu.db #数据库文件,存储上传的记录 | |-- qiniuFileNotifier.rb #监控配置目录变化,自动上传或者覆盖文件。 | `-- .setupQiniu.rb #安装需要的gem,复制配置文件到家目录 |-- README.md #说明文件 `-- startQiniu.sh #检查安装情况并启动文件监控自动上传启动程序

源码地址

解答问题

  • 提问:为什么配置文件放在家目录下
  • 回答:配置文件中包含了七牛的accessKey和accessSecret,默认的ocotpress受git管理,为了避免将配置文件误加入git管理,传到服务器端造成前面的accessKey和acessSecret泄露,所以放到家目录下。
  • 提问:既然文件都上传到了,是不是可以删除掉存储到public/images/的文件
  • 回答:当然可以,因为生成的网页的图片地址为七牛的外链地址,目前程序没有做主动删除文件的操作。

投票地址

我的作品名称octopress_qiniu

投票地址

最后希望大家多多支持,投我一票哈。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏重庆的技术分享区

MySQL在windows下的安装与配置(小白操作图文新)

官网版本: https://dev.mysql.com/downloads/mysql/5.6.html#downloads

1464
来自专栏子勰随笔

SVN 常用命令

29412
来自专栏阮一峰的网络日志

HTTP/2 服务器推送(Server Push)教程

HTTP/2 协议的主要目的是提高网页性能。 头信息(header)原来是直接传输文本,现在是压缩后传输。原来是同一个 TCP 连接里面,上一个回应(respo...

3445
来自专栏魏豪的专栏

Zabbix 监控配置及实战

Zabbix 是一个高度集成的网络监控解决方案,可以提供 企业级的开源分布式监控解决方案,本文介绍了如何进行监控配置,以及实战时的注意事项。

1.4K0
来自专栏重庆的技术分享区

MySQL在windows下的安装与配置

官网版本: https://dev.mysql.com/downloads/mysql/5.6.html#downloads

2084
来自专栏逸鹏说道

今天有人问我可以直接离线一个完整的网站吗?有没有什么工具之类的?我推荐一款:Httrack (网站复制机)案例:离线你的博客园

搞安全的朋友这款工具可能用的比较多,毕竟信息收集阶段还是很必须的,这篇文章主要讲一下离线你的博客园案例 官网:http://www.httrack.com/ 里...

3154
来自专栏吴裕超

撩人测试题项目总结

由于给热门测试这个div的margin-bottom失效,第二个测试活动没有显示完全,如左图所示期望效果是右图样式

802
来自专栏程序员同行者

Django2.1发布,Django2.1新特性

Django 2.1 现已正式发布,官方表示随着 2.1 的发布,对 2.0 系列的主流支持服务将结束,进入安全修复服务周期,直至2019年4月。

5562
来自专栏前端大白专栏

使用dva脚手架中使用redux-sage感受

2184
来自专栏BPM云

Jenkins错误记录

1103

扫码关注云+社区