将hexo博客一键部署到七牛云

2,546 阅读3分钟

一直有关注过七牛云。它的访问统计分析和CND加速功能让我很心动。正好之前用的服务器也快到期了。所以尝试着把博客部署到七牛云上。下面介绍一下将Hexo生成的页面部署到七牛云

准备

七牛云

  • 七牛云是云服务商,为用户提供免费的存储空间,CND加速,图片处理等功能。
  • 注册七牛云,实名认证,创建储存空间,绑定域名,融合CDN,缓存设置等这里就不赘述了。

qshell

  • shell是七牛提供的命令行上传工具,可以将本地的文件快速上传到七牛云

Hexo

  • 这个不用多说大家都知道是博客框架

安装使用qshell

qshell下载

下面介绍Mac系统下的安装和使用方法,其它系统可以参考文档

安装

该工具由于是命令行工具,所以只需要从上面的下载之后即可使用。其中文件名和对应系统关系如下:

文件名 描述
qshell_linux_x86 Linux 32位系统
qshell_linux_x64 Linux 64位系统
qshell_windows_x86.exe Windows 32位系统
qshell_windows_x64.exe Windows 64位系统
qshell_darwin_x64 Mac 64位系统,主流的系统

1)权限: 如果在Linux或者Mac系统上遇到Permission Denied的错误,请使用命令 chmod +x qshell_darwin_x64 来为文件添加可执行权限。qshell_darwin_x64 是上面的文件名,各个系统不一样 2)任何位置运行 对于Linux或者Mac,如果希望能够在任何位置都可以执行,那么可以把qshell所在的目录加入到环境变量$PATH中去。假设qshell命令被解压到路径/Users/coder/Downloads目录下面,那么我们可以把如下的命令写入到你所使用的bash所对应的配置文件中,如果是/bin/bash,那么就是~/.bashrc文件,如果是/bin/zsh,那么就是~/.zshrc文件中。写入的内容为:

export PATH=$PATH:/Users/coder/Downloads

保存完毕之后,可以通过两种方式立即生效,其一为输入source ~/.zshrc或者source ~/.bashrc来使配置立即生效,或者完全关闭命令行,然后重新打开一个即可,接下来就可以在任何位置使用qshell命令了。

使用

添加密钥和账户名称 该工具有两类命令,一类需要鉴权,另一类不需要。 需要鉴权的命令都需要依赖七牛账号下的 AccessKey, SecretKeyName。所以这类命令运行之前,需要使用 account 命令来添加 AccessKey ,SecretKey和Name 。 Name是用户可以自定义的字符串,用来唯一表示AccessKey/SecretKey账户,qshell会对添加的每一个账户信息加密保存,可以使用自命令user进行切换,切换账户的时候,需要使用账户唯一标识 Name。

$ qshell account <Your AccessKey> <Your SecretKey> <Your Name>

其中name表示该账号的名称, 如果ak, sk, name首字母是"-", 需要使用如下的方式添加账号, 这样避免把该项识别成命令行选项:

$ qshell account -- <Your AccessKey> <Your SecretKey> <Your Name>

添加完账户后,就可以使用qshell上传,下载文件了 更详细的信息也可以参考文档传送门

Hexo

现在我们可以在Hexo项目的根目录下创建upload.conf文件

{
  // 这个地址是根目录地址,不可使用相对路径
  "src_dir": "/Users/coder/7coder/7coder-blog/public",
  // 储存空间名称
  "bucket": "7coder",
  // 是否覆盖
  "overwrite" : true,
  // 检查新增文件
  "rescan_local" : true
}

Hexo生成的静态页面全部放在public文件夹下,所以src_dir应当是要以/public结尾的。 接下来可以使用qshell来上传文件了

qshell qupload upload.conf

执行后就会打印出同步的文件,然后访问你的空间域名就可以了。 关于qupload命令可以阅读详细文档传送门 今后写完博客只需下面两条命令就可以完成部署了

hexo generate
qshell qupload upload.conf

一键部署

我们的目的是实现一键部署,但是上面使用了两条命令才搞定。 打开Hexo下的package.json,填入以下代码

"scripts":{
    "publish": "hexo generate && qshell qupload upload.conf"
  }

今后只需要 npm run publish 就可实现一键打包部署到七牛云啦~

  • 如果上传成功但是访问无变化,可能是七牛的缓存原因。可以前往域名管理修改缓存配置
  • 七牛云的默认访问会在域名后拼上/index.html,可以前往空间设置开启默认首页