Hexo博客部署到七牛云

 

七牛云的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 创建对象存储空间,参考了这篇文章:https://blog.csdn.net/m0_45234510/article/details/116999229
七牛云 -> 对象存储 -> 空间管理 -> 新建空间 -> 访问控制:公开

# 绑定自定义域名
七牛云 -> 对象存储 -> 空间管理 -> 选定你的空间:leux -> 域名管理 -> 自定义源站域名 -> 输入域名:leux.cn -> 绑定域名 -> 复制CNAME -> 去域名备案处输入CNAME

# 源站域名绑定成功,请将已绑定的域名通过 CNAME 记录解析到以下地址、以保证能正常访问空间。iovip-z2.qiniuio.com
主机记录 记录类型 记录值
@ CNAME iovip-z2.qiniuio.com

# 配置HTTPS,在腾讯云申请好SSL证书后,选择服务器为Nginx类型的证书下载,在七牛云中【你的空间】下的【域名管理】中的【配置HTTPS】里面【上传自有证书】
# 最后在七牛云中【你的空间】下的【域名管理】中的【配置HTTPS】里面【更换证书】中选择你刚刚上传自有证书
将 leux.cn_bundle.crt 上传到【证书内容(PEM 格式)】,以 -----BEGIN CERTIFICATE----- 开头
将 leux.cn.key 上传到【证书私钥(PEM 格式)】,以 -----BEGIN RSA PRIVATE KEY----- 开头

# 开启默认首页,默认将 index.html 作为域名首页,【默认首页】功能默认关闭,开启后空间根目录及子目录中的 index.html 或 index.htm 文件将会作为默认首页进行展示
七牛云 -> 对象存储 -> 空间管理 -> 选定你的空间:leux -> 空间管理 -> 静态页面 -> 默认首页

生成静态页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 在Windows中CMD下执行
set PATH=%PATH%;C:\Soft\Nodejs # 设置环境变量
cd /D C:\Soft\Nodejs\www\source\_posts # 进到指定路径
hexo server -p 80 # 启动网站查看
hexo generate # 生成静态页面
cd C:\Soft\Nodejs\www\public # 进入页面目录

# 生成的静态页面后将目录下所有内容中有 leux.cn 的替换为 leux.cn,再替换百度统计 leux.cn 的ID为 leux.cn 的ID后便可上传七牛了
# LEUX.NET hm.src = "https://hm.baidu.com/hm.js?28223d4730a9c1c2c3771c663da6d2be";
# LEUX.CN hm.src = "https://hm.baidu.com/hm.js?28223d4730a9c1c2c3771c663da6d2be";
【Notepad++】->【搜索】->【在文件中查找】->【文件查找】
【查找目标】 leux.cn 28223d4730a9c1c2c3771c663da6d2be
【替换为】 leux.cn 28223d4730a9c1c2c3771c663da6d2be
【文件类型】 *.*
【目录】 C:\Soft\Nodejs\www\public

# 在Win中可下载 busybox 并将其路径加入环境变量中来替换相关字符
# https://frippery.org/files/busybox/busybox64u.exe
busybox64u.exe sed -i "s/leux.cn/leux.cn/g" index.html

# 在Linux下用SED来替换 C:\Soft\Nodejs\www\public 目录中所有文件相关字符
sed -i "s/leux.cn/leux.cn/g" `grep "leux.cn" -rl ./`
sed -i "s/28223d4730a9c1c2c3771c663da6d2be/28223d4730a9c1c2c3771c663da6d2be/g" `grep "28223d4730a9c1c2c3771c663da6d2be" -rl ./`

上传到七牛云

  1. GUI同步工具 QsunSync
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# https://developer.qiniu.com/kodo/tools/qsunsync
# 下载七牛云提供的QsunSync:http://devtools.qiniu.com/QSunSync-v2.1.1.zip
# 执行 QSunSync-v2.1.1.zip\QSunSync_v2.1.1_64bit\QSunSync.exe 程序对空间进行操作

# 没有密钥可去这申请:https://portal.qiniu.com/developer/user/key
AccessKey:abcdefg1234567890
SecretKey:1234567890abcdefg

【帐号设置】: 输入你的 AccessKey 和 SecretKey
【新建同步任务】:
【同步设置】 -> 【高级设置】 -> 勾选【遇到空间中存在同名文件则强制覆盖】和【直接上传源站】
【同步设置】 -> 【基本设置】 -> 配置要同步的目录,hexo部署好的文件都在public,所以\public结尾

【本地目录】: C:\Soft\Nodejs\www\public
【目标空间】: leux
【存储类型】: 普通存储 勾选【上传前检查空间是否存在同名文件】

  1. 命令行工具 Qshell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# https://developer.qiniu.com/kodo/1302/qshell
# https://github.com/qiniu/qshell/releases/download/v2.16.0/qshell-v2.16.0-windows-amd64.zip

# 配置 qshell 账号,<Your Name> 是用来区分账户 AccessKey/SecretKey 的唯一标识,单用户可以省略
qshell account <Your AccessKey> <Your SecretKey> <Your Name>

# 同步本地目录到指定空间
qshell.exe qupload2 --src-dir="C:\\Soft\\Nodejs\\www\\public" --bucket="leux" --overwrite=true --check-exists=true --check-hash=true --check_size=true --rescan-local=true

src-dir # 本地同步目录的绝对路径,不支持软连接
bucket # 是你的七牛云bucket名称,可以为公开或私有空间
overwrite # 是否覆盖空间中已有的同名文件
check-exists # 检查即将上传的文件在七牛云bucket中是否已经存在
check-hash # 指检查是否存在后,还要校验hash
rescan-local # 检查新增文件

  1. 在Windows下用批处理脚本上传
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
::代码页更改为UTF-8来显示中文
chcp 65001

@echo off
::启用延迟环境变量扩展
setlocal EnableDelayedExpansion

echo 指定目标路径...
set NODE_PATH="C:\Soft\Nodejs"

echo 清理历史生成...
call cmd /C "cd /D %NODE_PATH%\www\source\_posts && C:\Soft\Nodejs\hexo clean"

echo 生成静态页面...
::不知为何 hexo generate 执行完,后面的脚本内容便不在执行,现在将其摘出便好了
call cmd /C "cd /D %NODE_PATH%\www\source\_posts && C:\Soft\Nodejs\hexo generate"

echo 更换域名信息...
:: 将当前目录包括子目录下的所有 html 文本中的 leux.net 替换为 leux.cn
for /f %%i in ('dir /b /s /a:-d %NODE_PATH%\www\public\*.html') do (
busybox64u.exe sed -i "s/leux.net/leux.cn/g" %%i
busybox64u.exe sed -i "s/48ca531a11053ad348525e965c3ca451/28223d4730a9c1c2c3771c663da6d2be/g" %%i
)

echo 上传到七牛云...
qshell.exe qupload2 --src-dir="%NODE_PATH%\\www\\public" --bucket="leux" --overwrite=true --check-exists=true --check-hash=true --rescan-local=true

pause
exit