博客方案

方案概览

内容 方案
博客框架 Hexo
博客主题 Icarus
图床 又拍云
云服务器 阿里云
图片上传工具 picGo
Markdown编辑工具 obsidian
代理服务器 nginx

服务器部署在阿里云上,并且作为远程仓库,sourcetree上传。本地编写markdown,在hexo文件夹根目录下执行以下代码:

1
hexo new title
1
2
hexo g 生成
hexo s 跑本地服务器

博客图片上传:

  1. 自动上传至picgopicgo
  2. picgo上传至又拍云, 又拍云解析网址为picgo.kfzzzzzz.cn
  3. 上传图片后要将地址添加http

服务端集成部署

修改/var/repo/hexo.git/hook/receive_post文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

# 确保脚本中的错误会终止执行
set -e

# 设置 Hexo 网站目录路径
WORK_DIR=/var/hexo
REPO_DIR=/var/repo/hexo.git

# 更新 Hexo 仓库到工作目录
git --work-tree=$WORK_DIR --git-dir=$REPO_DIR checkout -f

# 进入 Hexo 目录
cd $WORK_DIR

# 清理 Hexo 的缓存
hexo clean

# 生成新的 Hexo 网站文件
hexo generate

echo "Hexo website has been updated!"

第一次错误.. 服务器端没有安装hexo命令行

第二次错误..服务器下hexo文件夹的格式仍然是root的git用户没有权限

第三次测试。。添加了一些错误日志 创建日志文件
在update_hexo

原来不能进行pull操作

Google以及baidu搜索引擎检索sitemap

google 比较简单 直接使用

npm install hexo-generator-sitemap

就能够生成sitemap

但baidu不知道为什么有提交sitemap次数而且hexo-generator-baidu-sitemap 使用了非常多的插件
于是用curl 自动推送的方式

改变receive_post 脚本,添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#获取所有生成的 URL 列表,并保存到 urls.txt
find ./public -type f -name "*.html" | sed 's|./public||' | sed 's|\.html$||' | sed "s|^|$HOST|" | sed 's|/index$||' > urls.txt

#使用 curl 将 urls.txt 中的所有 URL 推送到百度,并记录日志
RESPONSE=$(curl -s -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=$HOST&token=$BAIDU_TOKEN")

#输出返回结果到日志文件
echo "推送结果: $RESPONSE" >> $LOG_FILE

#检查返回的 JSON 中是否有错误
if echo "$RESPONSE" | grep -q '"error"'; then
#如果有错误,记录错误码和错误信息
ERROR_CODE=$(echo "$RESPONSE" | jq -r '.error')
ERROR_MESSAGE=$(echo "$RESPONSE" | jq -r '.message')
echo "推送失败: 错误码 $ERROR_CODE, 错误信息: $ERROR_MESSAGE" >> $LOG_FILE
elif echo "$RESPONSE" | grep -q '"success"'; then
#如果成功,记录成功推送的 URL 数量
SUCCESS_COUNT=$(echo "$RESPONSE" | jq -r '.success')
echo "成功推送了 $SUCCESS_COUNT 个 URL" >> $LOG_FILE
else
#如果返回结果中没有错误和成功字段,记录未知情况
echo "未知推送结果: $RESPONSE" >> $LOG_FILE
fi
作者

kfzzzzzz

发布于

2025-01-14

更新于

2025-01-21

许可协议

评论