在github上搭建个人博客

参考:

https://www.zhihu.com/question/20962496

https://zhuanlan.zhihu.com/p/111614119

https://www.yshawlon.cn/1.html

准备

  • 注册阿里账户
  • 填写实名认证信息(审核约一个工作日)
  • 挑选并购买域名
  • 配置解析 @ 即可
  • 申请免费的SSL证书(数字证书管理服务/SSL证书,审核约一个工作日)
  • 把证书配置给网站

设置博客

  • 申请github账号
  • 创建仓库名为 username.GitHub.io
  • sitting->pages,选择theme,设置购买的域名,勾选SSL

写博客

丰富博客内容或者简洁版写博客,其中链接为git上该资源链接。

下文有Jekyll版搭建及Hexo版搭建,两版类似建议搭建jekyll项目,理由是和github使用的一致可少走弯路,hexo很多深度定制化没经验的小白整理起来很耗时间,研究搭建固然好,但博客还是专注个人总结,不要忘记初衷。

另:本文建议先阅读Hexo版再根据Jekyll版搭建

搭建环境:Mac+github

一、Jekyll版

步骤类似:下载ruby—->rubygems—–>jekyll—->创建

下载ruby、rubygem及jekyll参考重装系统5.3、5.4

创建:https://www.cnblogs.com/baiyangcao/p/jekyll_basic.html

二、jekyll问题排查

2.1、报错:cannot load such file – minima

gem install minima

2.2、报错:cannot load such file – webrick

原因:新版本ruby不带webrick,需要下载添加依赖进去

解决:

bundle add webrick 

#如果报错,可以下载一下
gem install webrick

2.3、长时间不用项目报错,新建项目测试本地jekyll

cd ~/jekyll/
jekyll new myblog  # 修改myblog文件夹下_config.yml theme: minima
jekyll clean
jekyll build
jekyll server

打开http://127.0.0.1:4000/成功则本地jekyll没问题,删除myblog文件夹。

2.4、站内链接报错

https://jekyllrb.com/docs/liquid/tags/

===================================================

一、Hexo版

1.1、本地安装hexo

注:先安装node.js

npm install hexo-cli -g
hexo -v
where hexo

拉取博客代码到本地并复制一套出来做备份,我的备份位置是~/code/zhaotong2027.GitHub.io.bat,然后新建文件夹~/code/zhaotong2027.GitHub.io。 在文件夹下执行:

hexo init # 初始化hexo
npm install
hexo g # 生成静态文件
hexo s # 本地运行成功,按照提示打开连接可查看页面

1.2、配置主题

到theme文件夹下,下载想用的主题,比如

mkdir themes/next
git clone --branch v5.1.2 https://github.com/iissnan/hexo-theme-next themes/next

本地绑定git,将备份中.git文件夹复制到新建文件夹,修改_config文件

...

# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: https://zhaotong.fun # 修改自己的域名
permalink: :title.html

...

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next # 修改想用的主题

...

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repository: git@github.com:zhaotong2027/zhaotong2027.github.io.git # 自己的仓库地址
  branch: master

1.3、hexo推送代码

再次本地运行,运行成功则在dos中用hexo上传代码:

npm i hexo-deployer-git --save # 安装扩展
hexo clean # 清除缓存(public文件夹)
hexo g # 生成静态文件
hexo d # 部署到服务器(GitHub)

1.4、hexo写文章

hexo new post "article title"

在zhaotong2027.github.io.git/source/_posts文件夹下找到md文件,用本地markdown工具修改即可

主题NexT说明:http://theme-next.iissnan.com/getting-started.html

三、hexo设置及问题解决

2.1、hexo个性化设置

hexo帮助文档:https://hexo.io/docs/

首页:https://zhuanlan.zhihu.com/p/138500516

2.2、配置画图插件mermaid

npm install hexo-filter-mermaid-diagrams

配置文件末尾添加mermaid配置

# mermaid chart
mermaid: ## mermaid url https://github.com/knsv/mermaid
  enable: true  # default true
  version: "9.0.0" # default v7.1.2 latest v9.0.0
  options:  # find more api options from https://github.com/knsv/mermaid/blob/master/src/mermaidAPI.js
    #startOnload: true  // default true

主题的配置文件打开 themes/next/_config.yml mermaid相关参数

# Mermaid tag
mermaid:
  enable: true
  # Available themes: default | dark | forest | neutral
  theme: forest

NexT主题已支持 mermaid,hexo运行一次测试是否成功

graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;

2.3、hexo本地失效办法

cd ~
mv hexo hexo.bat
mkdir hexo
cd ~/hexo
hexo init
npm install
hexo g
hexo s

看是否成功运行,成功则继续:

mkdir zhaotong2027.GitHub.io
git clone git@github.com:zhaotong2027/zhaotong2027.GitHub.io.git
cd ~/hexo/zhaotong2027.GitHub.io
hexo clean
hexo g
hexo s
hexo d # 提交

正常运行则hexo.bat可删除

2.4、git页面不更新

报错:.gitmodules 中没有发现路径 ‘.deploy_git’ 的子模组映射

复现:本地hexo d正常结束后,git不更新,查看Actions,发现deploy失败

解决:在根目录下新建.gitmodules文件,并写入如下内容,保存上传到github

[submodule ".deploy_git"]
	path = .deploy_git
	url = https://github.com/zhaotong2027/zhaotong2027.GitHub.io.git
git页面不更新

无报错,git用的UTC时间,国内UTC+8,只发布git最新时间的,理论上延迟8小时

2.5、持续找不到文件

报错:

Could not find document '_posts/DevOps/2022-05-27-mac-githubs.md' in tag 'link'.

复现:本地文件不报错,远程git只要一打上这个链接就报错

解决:新建2022-05-28-mac-githubs.md文件,将原文件内容复制过来

原因:git远程未更新

有次把文件名的“mac”改成了“Mac”,后本地纠正成小写后了git上传成功了但远程没改,还是“Mac”。因此每次构建的时候,远程都构建“Mac”的文件,所以link中找不到文件。

最后在新建文件上传上去比对的时候,才在远程分支看到文件名是大写的“Mac”,因此构建不成功找不到文件。

所以再出现这类问题,务必要优先仔细比对远程仓库里的文件名,而不是在本地找原因。