Hexo自动部署博客脚本,具有微信确认、部署前预览确认的功能
Hexo自动部署博客脚本,具有微信确认、部署前预览确认的功能
Last edited 2022-9-29
type
Post
status
Published
date
Jun 27, 2022
slug
hexo-auto-deploy
summary
优雅的使用Hexo并发布文章,利用 Docker 进行自动部署和预发布预览, ServerChan 进行微信通知执行情况并确认是否部署,宝塔面板进行钩子操作既最后的部署发布动作。
tags
建站
Hexo
Linux
category
技术分享
icon
password
Property
Sep 29, 2022 09:10 AM
优雅的使用Hexo并发布文章,利用 Docker 进行自动部署和预发布预览, ServerChan 进行微信通知执行情况并确认是否部署,宝塔面板进行钩子操作既最后的部署发布动作。

前言

程序使用 Docker 进行自动部署和预发布预览, ServerChan 进行微信通知执行情况并确认是否部署,宝塔面板钩子触发Docker执行Hexo进行更新。
搭建成功后可实现写好文章后程序自动生成预览网页,通过微信信息通知有更新,浏览无误后点击连接由程序自动发布。

注意事项

以下安装教程全部以 linux Debian 为例,其他系统请自行搜索相关依赖进行部署。
  1. 创建一个非公开的GIT仓库用来存放文章的源文件
  1. 脚本可能还有其他需要的依赖,但是我忘记了看报错进行安装
  1. 请在ROOT用户下运行

注册 ServerChan

发送控制面板到微信,发送告警消息到微信
  1. 登入:微信扫码登入网站,就能获得一个SCKEY(在「发送消息」页面)
  1. 绑定:点击「微信推送」,扫码关注同时即可完成绑定
  1. 发消息:往 http://sc.ftqq.com/SCKEY.send 发GET请求,就可以在微信里收到消息啦
摘抄 ServerChan 官方: https://sct.ftqq.com

安装宝塔面板

由宝塔面板实现预览服务,Git钩子传递,原本宝塔是临时方案打算后面写Python后端,实在没时间了就这么用着了。
# Debian安装命令: wget -O install.sh <http://download.bt.cn/install/install-ubuntu_6.0.sh> && bash install.sh
摘抄宝塔官方: https://www.bt.cn/

安装Docker与Git

Docker 社区版

由 Docker 生成预览后端服务,自动部署服务
sudo apt-get update sudo apt-get install \\ apt-transport-https \\ ca-certificates \\ curl \\ gnupg2 \\ software-properties-common curl -fsSL <https://download.docker.com/linux/debian/gpg> | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo apt-get install docker-ce docker-ce-cli containerd.io
摘抄 Docker 官方: https://docs.docker.com/install/

Docker-Compose 工具

自动生成 Docker 镜像并启动
sudo curl -L "<https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

GIT

同步远程仓库,触发GIT钩子
sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev sudo apt-get install git

脚本安装与配置

获取脚本

获取脚本并根据结构创建文件夹 https://github.com/Hscpro/hexo-auto-deploy
/ └── /www └── /hexo ├── Install.sh ├── CrontabShell.sh ├── WebHookShell.sh └── HexoAuto.conf 注:无需严格安装此结构进行创建,但更改结构要注意下方的结构也要相应变化即可

赋予执行权限

sudo chmod 755 /www/hexo/*

拷贝文章到本地文章库目录

从你的博客目录里拷贝将下方所列的目录、文件到Path_MD变量所在的目录,本文所在/www/hexo/hscbook_gg
  1. themes
  1. source
  1. scaffolds
  1. _config.yml
拷贝完成后目录结构如下:
/ └── /www └── /hexo ├── Install.sh ├── CrontabShell.sh ├── WebHookShell.sh ├── HexoAuto.conf ├── docker-compose-s.yml ├── docker-compose-g.yml ├── hexo_docker | └── Dockerfile_hscbook ├── hscbook_gg | ├── themes | ├── source | ├── scaffolds | └── _config.yml └── .ssh

将本地文章库与远程GIT关联

如果出错仔细研究上面哪一步错了,脚本还有一个命令是用于拉取远程GIT仓库的用于重装后重新建立自动部署程序,有需要可自行查看脚本文件。
# 将本地文章库推送到GIT并追踪 sudo /www/hexo/Install.sh git-push

宝塔面板设置

  1. 在宝塔软件商城搜索 “宝塔WebHook” 进行安装
  1. 新增一个Hook,名称随意,脚本内容填写
sudo /www/hexo/WebHookShell.sh > /tmp/WebHookShell.log
  1. 查看 Hook密钥获得链接
  1. 将带有 Hook 密钥的链接填写到 Install.sh 里的 WebHook_URL

修改 HexoAuto.conf 文件

配置文件需严格安装注释进行填写,不可留空。
需要注意的是Path_MD后面的名称需要与Git_URL后面的仓库名称相符;例如:
Git_URL="git@example.com:user/hscbook_gg.git" 那么 Path_MD="${Path_Base}/hscbook_gg"
# 网站标识 Web_Name="hscbook" # 脚本等待超时 OverTime=60 # 缓存目录 Path_TMP="/tmp/HexoAuto" # 工作目录 (用于 docker-compose-<s/g>.yml 模板文件、程序文件定位) Path_Base="/www/hexo" # 文章仓库名称/路径 ${Path_Base}/XXXXXX Path_MD="${Path_Base}/hscbook_gg" # 日志文件 Log_File="${Path_Base}/HexoAuto.log" # 文章仓库地址(ssh) Git_URL="git@example.com:user/hscbook_gg.git" # 文章GIT主机域名 Git_Host="example.com" # 文章GIT端口 Git_Port="22" # 文章GIT用户名与邮箱 Git_Name="user" Git_Email="user@example.com" # 网页GIT主机域名 与_config.yml保持一致 Gitww_Host="example.com" # 网页GIT端口默认22 Gitww_Port="22" # 网页GIT用户名与邮箱 与_config.yml保持一致 Gitww_Name="user" Gitww_Email="user@example.com" # ServerChan TalkAdmin推送地址 ServerChan_TalkAdmin="<http://sc.ftqq.com/webhook/xxx-xxxxxxxxxxxxx>" # ServerChan 消息推送地址 ServerChan_News="<https://sc.ftqq.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.send>" # 宝塔 WebHook地址(带access_key) WebHook_URL="<https://面板地址/hook?access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>" # 博客预览地址 ServerChan_PreviewUrl="<http://example.example.com>" # 文件监控文件、文件夹(若发生改变则会同步到远程GIT库并触发一次生成) CheckDir=( ${Path_MD} )

修改 Install.sh 文件

生成的Docker模板是根据我自己的博客(maupassant主题)定制的,使用前需修改Install.sh更改安装的插件以适配你自己的网站
## 渲染(maupassant主题依赖) RUN npm install hexo-renderer-pug --save RUN npm install hexo-renderer-sass --save ## 字数统计(maupassant主题依赖) RUN npm install hexo-wordcount ## 搜索(maupassant主题依赖) RUN npm install hexo-generator-search --save ## Sitemap RUN npm install hexo-generator-sitemap --save RUN npm install hexo-generator-baidu-sitemap --save ## RSS订阅 RUN npm install hexo-generator-feed --save ## 二维码生成 RUN npm install hexo-helper-qrcode --save ## 压缩组件 RUN npm install hexo-all-minifier --save ## nofollow RUN npm install hexo-filter-nofollow --save ## 流程图 RUN npm install hexo-filter-flowchart --save ## 部署GIT RUN npm install hexo-deployer-git --save

执行 Install.sh 文件

生成 Docker 模板与 GIT 密钥,确保上一步的配置文件无误后再执行
# 生成 Docker 镜像模板 sudo /www/hexo/Install.sh docker # 生成文章库密钥,将显示的密钥添加到文章库GIT账户里 sudo /www/hexo/Install.sh keys-md # 生成文章库密钥,将显示的密钥添加到静态网页库GIT账户里(既Pages) sudo /www/hexo/Install.sh keys-md
不知道怎么添加密钥到Git账户里?贴两个官方教程吧:
  1. GitHub 添加教程:点击访问
  1. 码云添加教程:点击访问

测试验证

到此环境就配置完成了,在SSH测试一下
# 跳转到主目录 cd /www/hexo # 启动预览服务 结束按: Ctrl + C sudo docker-compose -f docker-compose-s.yml up # 启动部署服务 sudo docker-compose -f docker-compose-g.yml up

通知效果

notion image
  • 建站
  • Hexo
  • Linux
  • WP插件CodeColorer兼容PHP7Mikrotik RouterOS 路由器 CloudFlare DDNS 动态解析脚本(IPv4/IPv6)