一年期的服务器到期了, 需要迁移到之前购买的三年器的服务器上, 花了1个小时左右, 迁移完成. 于是我就想着应该总结下我是如何自动化发布我的个人blog的.
用到的技术和网站: “Hugo+Git+Github” , “Drone”, “Caddy”.
Hugo: 静态网站生成工具, 利用它将md文件转为静态网站.
Git: 个人Blog的文章使用Git管理.
Github: 作为Blog的server端存储. 并利用Github的hock. 触发push callback.
Drone: CI/CD工具. 自搭建, 接收Github的hock事件后, pull仓库代码, 根据仓库中的.drone.yml(默认文件名, 可自定义文件名)文件中定义的内容执行.
Caddy: http服务器. 优势开箱即用的https证书功能(利用Let’s Encrypt自动申请https证书)
下面说下细节.
Hogo+Git
Hogo是Go编写的静态网站生成工具. 配合各种好看的Themes, 可以将你的MD文件, 生成各种好看的静态网站.
具体Hogo怎么用. 这里就不细说. 展开的话可以写好几节文章. 这里主要说下我自己怎么用的
基本上配置好Hogo后, 以后每次写文章, 只要把文章放在自己规划好的分类下. 并添加到git版本管理中就好了.
添加到本地git后并push到远端github. 在搭建好自动化的前提下, 就不需要在做什么了, 1分钟左右, 你的网站内容就更新了.
Drone
Drone是Go编写的自动化发布平台. 个人觉得它的优势在于简单的声明式配置, 就可以完成CI/CD的功能.
这里贴下我的配置文件: .drone.yml.
kind: pipelinetype: dockername: default
steps:# CI第一步: 拉取git远端仓库后, 继续拉取git子模块代码. 即hugo的themes- name: git_submodule image: alpine/git commands: - git submodule init - git submodule update# CI第二步: hugo编译, 生成静态网站文件- name: build image: plugins/hugo volumes: - name: blog path: /path/to/public settings: output: /path/to/public
# 这里将宿主机的目录挂载到第二步hugo镜像下# 注意: 这里是挂在宿主机的磁盘路径, 此处将build好的静态文件放在/data/fuxiao.dev/blog下面volumes:- name: blog host: path: /data/fuxiao.dev/blog可以看到简单声明后, 就完成了CI/CD的配置, 其他交给Drone来做就行了.
Caddy
开箱即用的Https, 不要太简单…下面是我的Caddyfile文件配置.
fuxiao.dev { redir https://www.fuxiao.dev/{uri}}
www.fuxiao.dev { encode gzip zstd root * /usr/share/caddy/blog file_server log { output file /data/log/caddy/fuxiao.dev.log { roll_size 30MiB roll_keep 20 roll_keep_for 168h } }}
drone.fuxiao.dev { log { output file /data/log/caddy/drone.fuxiao.dev.log { roll_size 30MiB roll_keep 20 roll_keep_for 168h } } reverse_proxy 172.17.0.1:8080}www.fuxiao.dev: 开启fileServer模块, 配置了文件路径(root指令).drone.fuxiao.dev: 开启反向代理功能(reverse_proxy指令)
https根本不用配置, 是不是非常简单, 在腾讯云上申请免费一年的证书还需要各种配置. 这里完全不需要你配置, 开箱即用.
先写到这里, 后面会详细介绍每个工具的使用.