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 安装命令行工具。再执行上述命令.
|
未解决的可以直接输入以下命令:
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
在 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.json
中scripts
命令
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。