Gitlab搭建个人博客Hexo


为什么选择Gitlab

之前使用的 Github+Hexo 搭建的个人博客,但是github目前不允许百度蜘蛛的爬取。为了能被百度正常收录,将博客迁移至Gitlab上,Gitlab pages搭建的个人博客可以被百度正常收录。

安装环境

安装Node.js

从 Node.js 官网:https://nodejs.org/en/ 下载软件,按默认选项安装即可。完成安装后打开 cmd ,输入 node -v ,查看版本号。

初始化 hexo 博客

在本地新建一个目录,在该目录下打开cmd 或 git bash ,命令如下:

1
2
3
4
npm install hexo-cli -g #安装hexo命令行工具
hexo init #下载hexo博客初始源码
npm install #安装npm
hexo s 或 hexo server #启动本地服务器,预览本地hexo博客

初始化安装完成,可以通过本地预览看到博客界面。

部署 hexo 博客到 Gitlab Pages

新建 Gitlab Pages 仓库

注册或登录自己的 Gitlab,新建一个名为 username.gitlab.io 的项目,username 就是用户名,这里与 Github 基本一样。

Gitlab 账号提添加 SSH Key

在 Gitlab 账号设置中,添加本地 ssh 公钥,本地 ssh 密钥对位置:C 盘用户目录下。添加完后设置相应的gitlab信息:

1
2
3
4
git config --global user.name "your_name"
git config --global user.email "your_email"
# --global参数表示你这台机器上所有的Git仓库都会使用这个用户名和邮箱地址的配置来提交,当然也可以对某个仓库指定不同的用户名和Email地址
# 用户名和邮箱地址是本地git客户端的一个变量,每次commit都会用用户名和邮箱纪录,github的contributions统计就是按邮箱来统计的。

对ssh登录进行测试:

1
ssh -T gitlab@gitlab.com
hexo 博客源码目录下添加 .gitlab-ci.yml

Github 与Gitlab 不同的一点是:Github上部署博客,是在本地生成静态网页及文件,再推送到github仓库中。Gitlab上部署博客,网页的生成和部署都需要再Gitlab服务器端完成,这里就需要用到 .gitlab-ci.yml 文件来指导 Gitlab 服务器如何处理你提交的源文件。

最新的.gitlab-ci.yml文件官方版本可以从这个仓库中获取:https://gitlab.com/pages/hexo/blob/master/.gitlab-ci.yml

.gitlab-ci.yml 文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
image: node:10.15.3

cache:
paths:
- node_modules/

before_script:
- npm install hexo-cli -g
- test -e package.json && npm install
- hexo generate

pages:
script:
- hexo generate
artifacts:
paths:
- public
only:
- master
本地源码推送到 Gitlab 仓库

本地 hexo 源码目录:如果不能强制 push 源码,需要到 gitlab 项目设置中关闭分支保护。

1
2
3
4
5
git init
git add -A
git commit -m "init blog"
git remote add origin git@gitlab.com:username/username.gitlab.io.git
git push -u origin master -f

源码推送完成后,Gitlab 会检查 .gitlab-ci.yml 检查通过后,会自动执行脚本生成网页及发布博客。在 CI/CD 选项中可以查看自动化构建的进度。由于 Gitlab 服务器构建速度较慢,所以马上访问可能会出现404错误页面,一般等待几分钟之后重新访问即可。

绑定个人域名

如果自己有域名的话,还以将自己的域名解析到 Gitlab 博客上。因为 Gitlab 提供的是 https 访问,所以需要为自己的域名申请一个 ssl 证书,对于单个域名可以申请免费的证书。腾讯云对单个域名申请有效期1年的免费证书,证书由 亚洲诚信 颁发。

申请方式:登录腾讯云 https://cloud.tencent.com/ ,进入控制台选择产品 ssl证书,按照说明 添加一条TXT解析 即可申请免费证书。

申请到证书后下载并解压,到 Gitlab 仓库中选择左侧面板 settings->pages->new domain。Domain 项填入我们的个人域名,certificate 和 key 分别填写申请到的证书 .crt 和 .key 文件内容,然后点击create new domain。

最后到域名解析控制台添加一条 CNAME 记录,解析指向 username.gitlab.io ,待解析生效后即可使用个人域名访问博客了。