Hexo+GitLab新手向流程

警告
本文最后更新于 2022-06-24,文中内容可能已过时。

在经过了GitHub(百度抓取不明原因失败),Coding(奇怪的生成问题)后终究还是把目标锁定在了GitLab上

咕咕咕
已经准备将博客从 Hexo 迁移至 Hugo,所以 Hexo 和 Next-theme 相关内容不会再有了
Page 选择
强烈建议迁移至 Cloudflare Page或 Vercel 以获得更佳体验。

选用GitLab的缘由:

GitHub存在的问题

  1. 不能被百度爬虫爬取
  2. 非付费用户 Repo 只能为公开
  3. 自定义域名 HTTPS 证书存在问题

Coding存在的问题

  1. 百度玄学不能爬取(经搜索可能是因为Coding加入了跳转页面)
  2. 既然也不能爬取那就不如用GitHub了 =_=
  3. 华腾家的东西能绕还是绕着走

GitLab的优点

  1. 可被百度爬取内容
  2. 可以将语言调整为中文(不推荐)
  3. 非付费用户可设置 Repo 为私密

搭建流程:

配置环境及安装Hexo(Win10 64)

安装 Git & Node.js

Git 以及 Node.js 官方下载安装即可,注意选择自己对应的系统及版本

安装Hexo

本地新建文件夹如"Hexo",打开该文件夹右键选择Git bash here,依次输入以下指令

1
2
3
4
npm install hexo-cli -g #安装hexo命令行
hexo init #下载hexo初始代码
hexo install #安装依赖
hexo s #启动本地服务,预览页面

如以上操作无误,在浏览器打开http://localhost:4000/ 即可看到Hexo初始界面

将Hexo部署到Gitlab Pages

创建GitLab Page

注册Gitlab账号(不用教了吧),右上角点击你的头像,打开Settings->Preferences->Localization->Language选为你所需要的语言即可

提示
为了方便本文选项名称一律以 GitLab 中文界面为准
  1. 从右上方向左看你会看到一个加号,点击它,选择新建项目,选择Blank project,项目名称设置为username.gitlab.io(username为你的GitLab账户名),Visibility Level选项选为私有,不选Initialize repository with a README
  2. 点击你的头像,点击设置,点击SSH密钥,在页面即可看到生成一个现有的key,根据自己的情况选择后将key粘贴到相应位置并命名密钥,点击保存密钥即可

添加.gitlab-ci.yml文件

Hexo目录下新建添加.gitlab-ci.yml

修改主题配置&部署Gitlab Page

提示
以下以 Next 主题为例

Hexo目录下运行git bash

1
2
cd your-hexo-site
git clone https://github.com/theme-next/hexo-theme-next themes/next

打开~/Hexo/themes/next目录删除.git文件夹(否则会报错) 进入站点配置文件,搜索themes,将其值改为next

1
2
3
4
5
git init
git remote add origin git@gitlab.com:username/username.gitlab.io.git #根据自己的项目名称进行调整
git add .
git commit -m "init blog"
git push -u origin master

完成推送后在项目里点击CI/CD查看,显示已通过即可由https://username.gitlab.io/访问你的博客

Gitlab Pages 绑定个人域名

修改_config.yml文件中的url地址为https://yourdomain,重新提交。
部署完成后,在项目页面访问设置->Pages->New Domain,输入你自己的域名以及证书密钥并设置 DNS CNAME 解析到你的 Pages 即可使用你的域名访问博客(建议打开 Force HTTPS 并申请证书使用 HTTPS 访问)

杂项

CloudFlare 相关

Gitlab Page的访问速度直连情况下甚至不如 Github,所以我们需要使用 CDN 为其加速,而在使用 CloudFlare 加速时会默认禁用爬虫,这时候我们需要

  • 打开 主页>网站>安全性>WAF
  • 创建防火墙规则>编辑表达式
  • 输入
    1
    
    (http.user_agent contains "Baiduspider/2.0") or (http.user_agent eq "Baiduspider-image") or (http.user_agent eq "Baiduspider-render/2.0") or (http.user_agent eq "http://www.baidu.com/search/spider.html")
  • 选择操作为允许>保存
  • 创建防火墙规则>编辑表达式
  • 输入 (cf.client.bot)
  • 选择操作为允许>保存

这样就不会阻止爬虫爬取页面了

0%