简 述: 本站 ifmet.cn 迁移一份到国内服务器后,分享一下我当前的博客运行设计方案实行,以及我如何利用 GitHub
的 Action
设置脚本,进行双解析:阿里云服务器
+ GitHub Pages
。
[TOC]
本文初发于 “偕臧的小站“,同步转载于此。
部署原理
当前博客的部署原理如上图,解决了之前在国内访问略慢的遗憾。现在这套方案,非常的满足我的个人所需。
图解注释:
本电脑 M:主力编程机器,也可以是任意一台设备
服务器 A:GitHub 仓库 xmuliMark,存放源文件(*.md),只使用 master 分支
服务器 B:GitHub 仓库 xmuli.github.io,存放解析后网页(*. html),使用 master 分支 (非默认分支)
服务器 C:国内阿里云的轻量级服务器,存放解析后网页(*. html),使用 master 分支
优点如下:
- 任意电脑写
Markdown
文章,然后推送到 A 仓库即可(不用配置关心环境) - 不需本地解析,都是远程服务器解析,在部署到另外两台远程服务器
- 国内 IP 访问,解析到阿里云服务器
- 国外 IP 访问,解析到
GitHub
的服务器 - 仅一份源文件,两份部署后的解析文件,各自部署
- 源文件仅自己可访问,提高安全(将源文件与解析后的网页文件分开)
- 全程自己搭建,学习动手部署,甚是快乐
- 费用极低(阿里云服务器 + 域名费用)
- 自己的服务器又部署一个服务,感觉惬意
如何搭建
关于如何部署,详细可以参考这两篇
再之前的,可以参考 此系列 ,记录着我搭建博客的一些记录
配置 GitHub Action:
部署中的一个痛点:A 仓库存放 markdown 文件,然后可以利用 GitHub 的 Action 服务,自动解析为一份 html 网页文件,但是如何使用一个 .yml 部署到 阿里云服务器 + GitHub Pages 呢?
附上我比较优雅的解决方案,其中 A 仓库的 .yml 如下
# 工作流程的名称
name: Hexo Deploy GitHub Page + Aliyun
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
- name: Setup Node.js environment
uses: actions/setup-node@v2.1.5
with:
node-version: "14.x"
- name: Hexo deploy
env:
HEXO_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
ssh-keyscan ifmet.cn >> ~/.ssh/known_hosts
git config --global user.name "xmuli"
git config --global user.email "xmulitech@gmail.com"
npm i -g hexo-cli
npm i
hexo clean && hexo generate && hexo deploy
其中 HEXO_DEPLOY_KEY
是本地机器秘钥,也是 A 仓库(书写 *.md 文章) 中的 “settings-Secrets and variables” ,而 C 服务器有着对应的公钥,其值为本地机器的 git 私有秘钥( cat ~/.ssh/id_rsa
所输出的值);且设置了免密登录,而其中末尾的 run: | 中则下面两行是关键,同时部署两个服务器的重点
ssh-keyscan github.com >> ~/.ssh/known_hosts
ssh-keyscan ifmet.cn >> ~/.ssh/known_hosts