Hexo+GitLab新手向流程
在经过了GitHub(百度抓取不明原因失败),Coding(奇怪的生成问题)后终究还是把目标锁定在了GitLab上
已经准备将博客从 Hexo 迁移至 Hugo,所以 Hexo 和 Next-theme 相关内容要永远的鸽了
如果你使用 Cloudflare 作为 CDN 或解析,强烈建议迁移至 Cloudflare Page以获得更佳体验
选用GitLab的缘由:
GitHub存在的问题
- 不能被百度爬虫爬取
- 对于新手来说英文界面不太友好
- 非付费用户 Repo 只能为公开
- 不能直接给自定义域名 HTTPS 证书
Coding存在的问题
- 百度玄学不能爬取(经搜索可能是因为Coding加入了跳转页面)
- 既然也不能爬取那就不如用GitHub了 =_=
对 BAT 家的东西有偏见
GitLab的优点
- 可被百度爬取内容
- 可以将语言调整为中文(仍然习惯英文)
- 非付费用户可设置 Repo 为私密
搭建流程:
配置环境及安装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选为你所需要的语言即可
为了方便大多数人本文选项名称一律以中文书写
- 从右上方向左看你会看到一个加号,点击它,选择新建项目,选择
Blank project
,项目名称设置为username.gitlab.io
(username为你的GitLab账户名),Visibility Level
选项选为私有,不选Initialize repository with a README
- 点击你的头像,点击
设置
,点击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)
- 选择操作为允许>保存
这样就不会阻止爬虫爬取页面了