TheRiver | blog

You have reached the world's edge, none but devils play past here

0%

gitlab+github+hexo

前言

以前的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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
image: node:14.11.0
cache:
paths:
- node_modules/

before_script:
- npm install hexo-cli -g
- npm install
- npm audit fix
- npm install hexo-deployer-git --save
# - npm install hexo-symbols-count-time --save
# - npm install --save hexo-helper-live2d
# - npm install hexo-generator-searchdb --save
# - npm install live2d-widget-model-tororo
# - npm i hexo-generator-json-content@2.2.0 -S
# - npm install hexo-wordcount --save
# - npm install hexo-generator-sitemap --save
# - npm uninstall hexo-generator-baidu-sitemap --save
# - npm uninstall hexo-baidu-url-submit --save

pages:
script:
- eval $(ssh-agent -s)
- chmod 700 github-rsa
- ssh-add github-rsa
- git config --global user.email "wang84819762@gmail.com"
- git config --global user.name "RiverFerry"
- echo StrictHostKeyChecking no >> /etc/ssh/ssh_config
# - ssh -T git@github.com
- hexo clean
- hexo g -d
- echo "Deploy succeed!"
artifacts:
paths:
- public
only:
- master

谷歌收录

百度收录比较麻烦,并且被github屏蔽了,双线部署觉得没必要。就只搞了谷歌收录:

登陆谷歌站长,添加你的站点,新版本有不带前缀的选项,我用的这一个,然后dns验证

99a8104b-bc6a-43a4-88d6-1849cc5b5229.jpg

然后生成sitemap:

1
npm install hexo-generator-sitemap --save

修改项目的config:

1
2
3
4
url: https://riverferry.site

sitemap:
path: sitemap.xml

source目录下新增robots.txt:

1
2
3
4
5
6
7
8
9
10
11
12
13
# hexo robots.txt
User-agent: *
Allow: /
Allow: /archives/
Allow: /categories/
Allow: /tags/
Disallow: /vendors/
Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/
Disallow: /fancybox/
Sitemap: https://riverferry.site/sitemap.xml

在google的search console添加sitemap即可。

更新

色表:https://flatuicolors.com/palette/fr
图:腾讯cos

其他

报错可以参考下面的文章寻找解决方案。

参考

将 Hexo 部署到 GitLab Pages

使用GitLab Ci 自动部署Hexo到GitHub

Hexo 搭建个人博客系列:主题美化篇

超详细Hexo+Github Page搭建技术博客教程【持续更新】

超详细Hexo+Github博客搭建小白教程

利用 GitHub + Hexo + Next 从零搭建一个博客

----------- ending -----------