Hexo+GitLab新手向流程

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


已经准备将博客从 Hexo 迁移至 Hugo,所以 Hexo 和 Next-theme 相关内容要永远的鸽了

如果你使用 Cloudflare 作为 CDN 或解析,强烈建议迁移至 Cloudflare Page以获得更佳体验

选用GitLab的缘由:

GitHub存在的问题

  1. 不能被百度爬虫爬取
  2. 对于新手来说英文界面不太友好
  3. 非付费用户 Repo 只能为公开
  4. 不能直接给自定义域名 HTTPS 证书

Coding存在的问题

  1. 百度玄学不能爬取(经搜索可能是因为Coding加入了跳转页面)
  2. 既然也不能爬取那就不如用GitHub了 =_=
  3. 对 BAT 家的东西有偏见

GitLab的优点

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

一把钥匙N把锁(误


搭建流程:


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

安装 Git & Node.js

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

安装Hexo

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

每次仅可输入一个指令

$ 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选为你所需要的语言即可

为了方便大多数人本文选项名称一律以中文书写

  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

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

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

$ git init
$ git remote add origin [email protected]: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
  • 创建防火墙规则>编辑表达式
  • 输入
    (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)
  • 选择操作为允许>保存

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