无服务器0费用部署mdbook 搭建个人博客

mdbook

#无服务器0费用部署mdbook 搭建个人博客

mdbook简单易用,但是模板和扩展较少,已经逐步升级到hugo上

#思路

利用 github的Actions,实现自动编译
使用github的pages,部署静态网站
使用域名dns的解析

#优点

不需要另外弄服务器,几乎可以说是完全免维护 ,这条就覆盖了所有缺点了

#缺点 几乎没有

#Actions 执行速度 有点慢

一开始弄错了脚本差不多需要8分钟才能更新
后续重新处理了一下 把Actions速度压缩到8-10秒左右,另外,,github pages的自动更新大概需要45-48秒,速度已经很可观了

#国内访问速度慢

可以dns分区域解析 国内备案后套cdn来解决

#国内编辑速度也有点慢

解决方法 本地编辑挂代理推送
使用gitee目前免费的镜像同步功能,自动推送到github ,gitee默认大概30分钟左右同步提交一次
也可以 用其他的支持deops的git自动提交给github 当然,直接挂梯子简单又靠谱

#开始搞

打开 github 创建一个库

#内容部分

至少需要一个文件 /src/SUMMARY.md
内容要符合mdbook的标准。

plaintext
# Table of contents

- [首页](README.md)

另外 简单弄一个首页文件
/src/README.md
内容随意

再创建自动化文件
github默认使用这个文件夹下的文件来执行
.github/workflows/mdbook.yml
内容

plaintext
name: mdbook
on:
  push:
    branches:
      - main

jobs:
  mdbook_build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    - name: 安装 mdbook
      run: |
        mkdir mdbook
        curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
        echo `pwd`/mdbook >> $GITHUB_PATH
    - name: 编译 mdbook
      run: |
        mdbook build
    - name: 文件处理
      run: |
        git worktree add gh-pages
        #mkdir  gh-pages
        cd  gh-pages
        echo "删除 ref 以避免保留历史记录"
        rm -rf *
        mv ../book/* .
        echo "处理独立域名的绑定 CNAME文件"
        echo "dev.leiyanhui.com" >> CNAME
    - name: 部署
      run: |
        git config user.name "joyanhui"
        git config user.email "[email protected]"
        git init
        #git checkout -b main
        git add -A
        git commit -m "自动生成  $GITHUB_SHA to gh-pages"
        echo "推送 "
        git push origin gh-pages -f -q

然后打开 https://github.com/你的用户/仓库名/actions

查看 这个ci运行情况

前面需要编译一些东西,所以速度很慢 耐心等待

上面 会自动创建一个分支 branch: gh-pages 里面是html文件

然后 pages 定位到这个分支 就可以了

#进阶

#使用私有库保护源码

github的私有库开通pages 是收费的

点击这里查看私有库免费pages方法

#国内访问和管理加速

点击自动部署在github上的 mdbook 或者 hexo等 国内访问加速的方法

#其他问题

#一些错误

plaintext
Error: The deploy step encountered an error: The process '/usr/bin/git' failed with exit code 128

#如果绑定独立域名的话

还需要 在/book/ 里面创建一个CNAME文件,内容 就是域名,不然每次会自动删除

在前面的 mv ../book/* . 之前添加一行

plaintext
echo "dev.leiyanhui.com" >> ../book/CNAME

参考:https://github.com/rust-lang/mdBook/wiki/Automated-Deployment:-GitHub-Actions

评论