0.前言

最新更新了一下站点,重新使用安装了一下最新版的主题,从git安装切换到pnpm安装。将语雀文档同步方案从yuque-hexo切换成了elog,配合定时脚本全自动部署博客。

1.安装

1.1安装Git

1.2安装Node.js

1.3安装Hexo

1
2
3
4
5
sudo npm install -g hexo-cli

#针对Mac平台:
#若编译报错,请先到AppStore下载安装`Xcode`.
#安装完,启动并进入 Preferences -> Download -> Command Line Tools -> Install 安装命令行工具。再执行上述命令.

未解决的可以直接输入以下命令:

1
xcode-select --install

2.创建博客

2.1.建站

1
2
3
hexo init <folder>
cd <folder>
pnpm install

2.2.添加主题

1
pnpm add hexo-theme-butterfly

升级方法:在 Hexo 根目录下,运行 pnpm update hexo-theme-butterfly

2.3.应用主题

修改Hexo根目录下的 _config.yml,把主题改为butterfly

1
theme: butterfly

在 hexo 的根目录创建一个文件 _config.butterfly.yml,并把主题目录的 _config.yml内容复制到 _config.butterfly.yml去,具体配置参考Butterfly 文档(三) 主题配置

2.3.1.外链处理

在主题配置文件中增加<meta name="referrer" content="no-referrer">,这是简单暴力改法,当然也可以选择elog的图床功能,见图床平台配置,具体安装参考第3章节添加Elog或者参考官方文档。

1
2
3
inject:
head:
- <meta name="referrer" content="no-referrer">

3.添加Elog

Elog官方文档

3.1.创建elog.config.js

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
31
32
33
module.exports = {
write: {
platform: 'yuque-pwd',
'yuque-pwd': {
host: process.env.YUQUE_HOST,
username: process.env.YUQUE_USERNAME,
password: process.env.YUQUE_PASSWORD,
login: process.env.YUQUE_LOGIN,
repo: process.env.YUQUE_REPO,
onlyPublic: false,
onlyPublished: true,
}
},
deploy: {
platform: 'local',
local: {
outputDir: "./source/_posts/",
filename: "title",
format: "matter-markdown",
catalog: true,
formatExt: "",
}
},
image: {
enable: false,
platform: 'local',
local: {
outputDir: './docs/images',
prefixKey: '/images',
pathFollowDoc: false,
}
}
}

3.2.设置本地环境变量

可以设置本地环境变量或者创建.elog.env

1
2
3
4
5
6
7
8
# 语雀(帐号密码方式)
YUQUE_USERNAME=
YUQUE_PASSWORD=
# 语雀公共参数,使用语雀必填
YUQUE_LOGIN=
YUQUE_REPO=
# 团队知识库需要配置
YUQUE_HOST=https://xxxx.yuque.com

3.3.修改package.jsonscripts命令

1
2
3
4
5
6
7
8
9
"scripts": {
"dev": "hexo clean && hexo generate && hexo server",
"elog": "elog sync -e .elog.env",
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server",
"product": "elog sync && hexo clean && hexo generate"
},

3.4.本地运行

1
2
npm run elog
npm run dev

4.云效流水线部署

4.1.添加流水线源

4.2.添加Node.js构建

4.2.1.任务步骤

4.2.1.1.Node.js构建

  • 版本选择方式:输入制定版本
  • Node版本:22.18.0
  • 构建命令
1
npm config set registry https://registry.npmmirror.com  && npm install -g pnpm && npm install @elog/cli -g  && npm install -g hexo-cli && pnpm install && npx @elog/cli sync && hexo clean && hexo g &&  hexo g

ps:如果安装了hexo-auto-category,则此处hexo g必须运行两次,否则分类数据会出不来

4.2.1.2.构建物上传

4.3.添加主机部署

4.4.设置环境变量

4.5.打开Webhook触发

4.6.运行流水线

5.部署elog-yuque-sync检测脚本

1
2
3
4
5
6
7
8
9
[root@VM-0-11-centos elog]# ls -la
总用量 52
drwxr-xr-x 3 root root 4096 8月 19 19:12 .
dr-xr-x---. 13 root root 4096 8月 19 18:46 ..
drwxr-xr-x 6 root root 4096 8月 19 18:56 docs
-rw-r--r-- 1 root root 26180 8月 19 18:56 elog.cache.json
-rw-r--r-- 1 root root 692 8月 19 17:32 elog.config.js
-rw-r--r-- 1 root root 1388 8月 19 17:30 .elog.env
-rw-r--r-- 1 root root 1136 8月 19 18:46 elog-yuque-sync.sh

elog.config.js与.elog.env跟本地同理直接拷贝本地代码中的即可

5.1.添加elog-yuque-sync.sh

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash

# 配置参数
ELOG_ENV_PATH="/root/elog/.elog.env"
ELOG_CONFIG_PATH="/root/elog/elog.config.js"
# 检查必要命令
check_command() {
if ! command -v $1 &> /dev/null; then
echo "错误:未找到 $1 命令,请先安装"
exit 1
fi
}

# 检查依赖
#check_command elog
check_command grep

# 确保配置文件存在
if [ ! -f "$ELOG_ENV_PATH" ]; then
echo "错误:找不到环境变量文件 $ELOG_ENV_PATH"
exit 1
fi

if [ ! -f "$ELOG_CONFIG_PATH" ]; then
echo "错误:找不到配置文件 $ELOG_CONFIG_PATH"
exit 1
fi

echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始同步语雀文档..."

# 执行同步
result=$(npx @elog/cli sync -e "$ELOG_ENV_PATH" 2>&1)
echo "同步结果:"
echo "$result"

# 检查是否需要更新
if echo "$result" | grep -q "没有需要同步的文档"; then
echo "没有需要同步的文档"
else
echo "检测到文档更新,触发Hexo重新生成..."

# 触发流水线
echo "触发流水线"
# 请自行修改下方的流水线地址,填入云效流水线Webhook地址
curl --header "Content-Type: application/json" --request POST --data "{}" http://flow-openapi.aliyun.com/pipeline/webhook/xxx
fi

请自行修改curl处的流水线地址,填入云效流水线Webhook地址

5.2.宝塔面板定时执行脚本

也可以自行处理定时执行内容,宝塔非必选

点击宝塔面板-计划任务-添加任务

6.常见问题

6.1.分类数据空白

如果安装了hexo-auto-category插件,则需要’hexo g’两次,在首次’hexo g’的时候插件是有异常的。详细原因见BUG:第一次hexo generate不生成categories #38