前言
以前的blog是基于github page + jekyll实现的,参考别人的模板修修改改。存在一些痛点:
- 代码段不能显示行号
- 文章没有分页功能
- 没有搜索功能
- 没有评论系统(其实是可以实现,但是因为参考别人的模板,之前参考文章失效了,也不知道怎么修改了)
- 不够流畅,并且缺乏定制化的东西
后面选择的方案是hexo+github+gitlab.通过hexo生成静态网页,依赖next的强大可用资源,然后用gitlab实现ci/cd,整个流程还是比较满意的。也考虑过hugo框架,但是资源太少,放弃了
实现过程
step 1 安装nodejs
我之前安装过,就跳过这步了,安装步骤网上很好找
step 2 安装hexo
npm i hexo-cli -g
npm install
hexo init //初始化,生成必要的文件
hexo g //hexo generate 生成静态网页
hexo s //hexo server 本地部署
hexo clean
step 3 配置github
git config --global user.name
git config --global user.email
ssh-keygen -t rsa -C
//添加ssh pub key 到github setting中的ssh key配置中
ssh -T git@github.com
//修改项目路径下的_config.yml repository:填入github仓库地址
step 4 写文章
hexo new post
//会在source/_post下面生成md文章
step 5 ci/cd
本地部署hexo的话,直接hexo g -d就行了,会把静态网页传到github下。
gitlab部署的话,需要在gitlab新增一个private的仓库,把hexo下面的文件传进去,把github的rsa也放在仓库中。然后写.gitlab-ci.yml文件,就是脚本配置文件,然后以后push/merge会触发ci/cd.从gitlab配置的share running的docker中执行脚本,部署到github.
我的文件:
1 | image: node:14.11.0 |
谷歌收录
百度收录比较麻烦,并且被github屏蔽了,双线部署觉得没必要。就只搞了谷歌收录:
登陆谷歌站长,添加你的站点,新版本有不带前缀的选项,我用的这一个,然后dns验证
然后生成sitemap:
1 | npm install hexo-generator-sitemap --save |
修改项目的config:
1 | url: https://riverferry.site |
source目录下新增robots.txt:
1 | # hexo robots.txt |
在google的search console添加sitemap即可。
更新
色表:https://flatuicolors.com/palette/fr
图:腾讯cos
其他
报错可以参考下面的文章寻找解决方案。