方案概览
内容
方案
博客框架
Hexo
博客主题
Icarus
图床
又拍云
云服务器
阿里云
图片上传工具
picGo
Markdown编辑工具
obsidian
代理服务器
nginx
服务器部署在阿里云上,并且作为远程仓库,sourcetree上传。本地编写markdown,在hexo文件夹根目录下执行以下代码:
博客图片上传:
自动上传至picgo
picgo上传至又拍云, 又拍云解析网址为picgo.kfzzzzzz.cn
上传图片后要将地址添加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