【腾讯云的1001种玩法】如何腾讯云存储上搭建一个hexo博客

一.选型

我要写文章做博客,我对网站的要求是:

1.可以绑定域名,2.访问速度快,3.价格非常便宜,4.不需要操心维护,5.更新方便。

目前有4个选择:1.IaaS,2.Paas,3.虚拟空间,4具有静态网站功能的云存储(比如腾讯云对象存储COS)。

服务器价格高昂还需要费心维护,Paas价格比较便宜灵活性好,但是需要程序适应平台,虚拟空间共享ip不容易被搜索引擎青睐还不灵活,不能随心变换你的程序。于是乎最好的莫过于云存储,以腾讯云对象存储COS为例,支持静态网站,支持域名绑定,支持相对目录下的默认首页(index.html),这点很重要,例如你访问http://www.abc.com/sub/ 的时候,能访问sub目录下的index.html页面,这点阿里云的云存储是没有的,然后价格特别便宜,由于有免费的额度对于小流量的博客近乎免费,同时提供api接口,写写脚本就可以一键同步内容。好了接下来是具体实现。

二.博客程序

博客程序千千万,我们要能生成静态的,文章用markdown写的,主题不能太少的,于是选择了hexo

http://hexo.io

一款node.js编写的静态博客程序,最概况的操作是运行命令hexo new hello-world生成一个新文章,文章用markdown写好后hexo g生成静态网站,然后把静态网站上传到云存储,OK。

2.1安装hexo

环境要求:安装了node和npm。并运行下面命令:

npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

代码解释:首先用npm安装hexo,然后初始化一个博客,名字就叫blog,进入生成的blog目录,运行初始化安装,最后启动本地调试服务器,可以在本地看到一个博客网站了。

2.2写一文章

hexo new hellokitty

代码解释:新建一篇文章,名字叫做hellokitty,然后打开blog/source/_post/hellokitty.md 文件进行撰写。 文章写好后运行:

hexo g

代码解释:生成了整个静态的博客了,生成在public目录。

三.上传到腾讯云存储

前置要求:已经配置好了腾讯的云对象存储。

3.1拥有一个云存储

这个一笔带过,在腾讯云的对象存储中新建一个Bucket(桶),在桶的基础配置中开启静态网站访问,在域名管理中设置自定义域名并在你的dns解析中做好相应的设置。

3.2写上传脚本

前置条件:在控制台秘钥管理处获取一对秘钥。代码为python,系统需要安装python环境。

先看代码:

push2cos.py

# -*- coding: utf-8 -*-
import os
import qcloud_cos
'''
发布博客到腾讯云cos上面去
腾讯云上面对应的根目录为/blog
'''
COS_APPID=125100066 #你的appid
COS_SECRET_ID=u'<你的秘钥id>'
COS_SECRET_KEY=u'<你的秘钥密码>'
COS_REGION_INFO='guangzhou'#你的云存储的位置,这个看你设置
currentPath=os.path.dirname(os.path.abspath(__file__)) 
cos_client=None
lastChange={}#文件路径和最后修改时间
if  os.path.exists(os.path.join(currentPath,'lastchange.txt')):
    with open(os.path.join(currentPath,'lastchange.txt'),'r') as f:
        for line in f:
            item=line.split(',')
            lastChange[item[0]]=float(item[1])
def upload(remotePath,localPath):
    global cos_client
    if cos_client==None:
        cos_client=qcloud_cos.CosClient(COS_APPID,COS_SECRET_ID,COS_SECRET_KEY,COS_REGION_INFO)
    request=qcloud_cos.UploadFileRequest(u'你云存储bucket的名字',unicode(remotePath) ,unicode( localPath))
    request.set_insert_only(0)
    upload_file_ret = cos_client.upload_file(request)
    print upload_file_ret
def scanPath(pathname,remotePre=''):
    for root,path,filelist in os.walk(os.path.join(currentPath,pathname)):
        for filename in filelist:
            fullPath=os.path.join(root,filename)
            mtime=float(os.path.getmtime(fullPath))
            if fullPath in lastChange:               
                if mtime-lastChange[fullPath]>1:
                    lastChange[fullPath]=float(mtime)
                    remotePath=fullPath.replace(os.path.join(currentPath,pathname),'/blog/'+remotePre)
                    upload(remotePath,fullPath)
            else:
                lastChange[fullPath]=float(mtime)
                remotePath=fullPath.replace(os.path.join(currentPath,pathname),'/blog/'+remotePre)
                upload(remotePath,fullPath)
if not os.path.exists(os.path.join(currentPath,'static')) or not os.path.exists(os.path.join(currentPath,'blog')):
    print '当前目录不存在./blog或者./static目录'
    exit(1)
scanPath('blog/public/')
scanPath('static/','static/')
with open(os.path.join(currentPath,'lastchange.txt'),'w') as f2:
    for key in lastChange:
        f2.write('%s,%f\n'%(key,lastChange[key]))

代码说明:以上代码原理是扫描脚本所在根目录下的blog目录和static目录并检查他们最近的更新时间,如果文件发生了变化就上传到腾讯云,文件lastChange.txt是用来记录文件最后的修改时间。我的博客是放在云存储中的blog子目录里的,各位按需进行相应的变化。记得按需修改目录和相关app参数

3.3 实际使用体验

每次我要写文章,我就运行命令hexo new 新文章,写完后运行hexo g生成静态网站,然后python push2cos.py,三行命令搞定。这个就是我寄放在腾讯云的博客:

http://www.lixin.me

相关推荐

【腾讯云的1001种玩法】利用腾讯云搭建个人博客

腾讯云服务器免费体验

【腾讯云的1001种玩法】如何使用腾讯云做博客

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

李鑫的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

SpyNote V5.0图形化工具远程管理Android手机教程(附视频)

前言 本篇文章主要以图文教程和视频演示详细地教你如何快速学会使用SpyNote 5.0图形化工具来穿透内网远程控制Android手机。本教程有一定的杀伤力,请各...

2.2K7
来自专栏琯琯博客

超好用的谷歌浏览器、Sublime Text、Phpstorm、油猴插件合集

一、谷歌浏览器插件 二、Sublime Text 插件 三、Phpstorm 插件 四、油猴脚本 4.1 脚本网站 4.2 自用的脚本 五、相关链接 ? 分享...

1K8
来自专栏pangguoming

微信公众平台开发 自定义菜单

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示:

3351
来自专栏张戈的专栏

WordPress显示访客UA信息:Show UserAgent纯代码轻度汉化版

前几天在修复留言日期显示错误的问题时,突然觉得可以在这个位置集成一下访客信息,因为见到过不少博客的留言板都有了类似的功能。经过搜索、测试并筛选,最终选定了 Sh...

3035
来自专栏python爬虫日记

python2.7下同步华为云照片的爬虫程序实现

随着华为手机的销量加大,华为云的捆绑服务使用量也越来越广泛,华为云支持自动同步照片、通讯录、记事本等,用着确实也挺方便的,云服务带来方便的同时,也带来了数据管理...

1504
来自专栏张戈的专栏

WordPress评论滑动/拉链解锁myQaptcha代码版及部署方法

虽然博客取消了文章页面评论,仅剩下留言板的评论,但张戈还是要尽力做到尽善尽美,将用户体验做到极致!在防止垃圾评论的同时,尽量让评论变得更加简单快捷。 于是就想到...

3879
来自专栏FreeBuf

利用Burp Suite对OWASP Juice Shop进行渗透测试

1. 简介 OWASP 的 在线果汁商店 (Juice Shop) 项目, 是一个很好的开源Web 靶场。它包含了OWASP的10大漏洞 [1], 并且这个项目...

27310
来自专栏张戈的专栏

DX-Seo与WP-codebox插件冲突解决方法

这两天折腾代码高亮插件,折腾得够呛!缘由要不就是导致网站爆卡,要不就是点击复制按钮出问题。 这里说下 wp-codebox 和 DX-Seo 插件冲突的现象及解...

2909
来自专栏数据之美

Shell 黑科技之匿名函数实现任务并行化

shell 作为一门系统级别胶水语言,学习成本低,用起来很方便,但是缺点也显而易见:性能问题一直为人锁诟病。所以 shell 也就多用在简单的系统管理等场合,数...

23210
来自专栏杨逸轩 ' sBlog

为你的 typecho 博客开启 gzip 压缩功能

2419

扫码关注云+社区