介绍
Gitlab 已经越来越强大,同时也可以使用它提供的 pages 搭建个人静态博客
官网 pages 介绍
官网 doc
搭建步骤
Fork官网推荐模板
模板支持很多种静态博客:hugo, hexo, jekyll等
这里选用hexo:hexo模板链接- Enable shared Runners
在Settings -- CI / CD -- Runners settings中检查,是否打开该功能 - Configure your project (optional)
在Settings -- General -- Advanced settings -- Rename repository中,将仓库名称和路径都修改为username.gitlab.io - Manually run a pipeline
下载该仓库修改并提交后,触发一次自动编译
在CI / CD -- Pipelines中,查看任务是否执行成功 - Visit your site!
搭建完毕!直接访问https://username.gitlab.io即可
如果无法访问,可能会存在一点延时,过几分钟后再访问
Hexo 环境搭建
介绍
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内即可利用靓丽的主题生成静态网页。
安装 Node.js 和 git
Hexo 安装依赖 Node.js 和 git,所以需要先安装这两个环境
- Node.js
Node.js 官网 下载Windows下的稳定安装包,一路Next安装完毕后,重新开启window cmd终端,查看版本号测试是否安装成功:
1 | $ npm --version |
安装 Hexo
Windows 下的 Node.js 和 git 环境准备好后,在 windows cmd 终端中,只需一条命令就可以安装 Hexo :npm install -g hexo-cli
官网安装文档
windows cmd 终端中查看版本号:
1 | $ hexo --version |
gitlab 博客本地环境预览
本地安装好 Hexo 环境后,可以本地预览 gitlab 中写的博客了。Hexo 相关命令建议在 windows cmd 中输入,打印信息会比 git bash 中的多
hexo初始化博客目录cmd中执行如下命令,等待初始化完毕,并产生node_modules目录E:\01_work\00_My\06_blog> hexo init username.gitlab.io- 安装
hexo-serverHexo 3.0把服务器独立成了个别模块,必须先安装 hexo-server 才能使用:npm install hexo-server --save
注意:搭建时如果没有先安装该模块,也可以直接执行hexo server;但是当安装完本地搜索hexo-generator-searchdb后,提示需要安装该模块,而此时再安装hexo-server,会导致hexo server运行后,无法预览网页。 - 下载博客
git-bash在同级目录中下载gitlab博客仓库:git clone git@gitlab.com:username/username.gitlab.io.git username.gitlab - 重命名博客目录并拷贝第一步生成的
node_modules目录
将前面hexo命令生成的username.gitlab.io目录重命名delete
将git下载的博客目录由username.gitlab更换为username.gitlab.io
将delete目录中的node_modules拷贝到username.gitlab.io中
也就是从gitlab中下载的博客目录需要hexo初始化命令生成的node_modules
(这里也可以简单的使用比较工具BeyondCompare将git管理的仓库,合入到hexo建立的博客目录中,这样效率比较高) cmd开启服务验证
1 | E:\01_work\00_My\06_blog\username.gitlab.io>hexo server -l |
浏览器中打开 http://localhost:4000/username.gitlab.io 验证!如果有时读取失败或者读取的内容不对,可以清空浏览器的缓存,再重新登录查看!
设置主题和样式 NexT
介绍
Hexo 可以非常方便的更换主题,而且官网及第三方精美主题也很多,本博客选用了国内最流行主题之一: NexT
Hexo 官网及主题
NexT github
NexT 文档
NexT 作者博客
下载 NexT 主题
Hexo 所有主题都在目录 theme\ 下,直接下载 NexT 主题到该目录:git clone --branch v5.1.3 https://github.com/iissnan/hexo-theme-next themes/next
下载好后,删掉目录中的 .git, .github 目录,并将该目录整体提交到博客仓库中
更换博客主题
修改站点配置文件,仓库根目录下 _config.yml ,更换主题为 next :
1 | diff --git a/_config.yml b/_config.yml |
更换博客样式
修改主题配置文件,文件路径 theme\next\_config.yml,本博客采用和主题作者一直的样式 Pisces :
1 | diff --git a/themes/next/_config.yml b/themes/next/_config.yml |
参考官网文档对这几种样式有基本的介绍及效果展示:
- Muse
默认 Scheme,这是 NexT 最初的版本,黑白主调,大量留白
XiaMo | OAwan | Hui Wang - Mist
Muse 的紧凑版本,整洁有序的单栏外观
Jeff | uchuhimo | xirong - Pisces
双栏 Scheme,小家碧玉似的清新
Vi | Acris | Rainy - Gemini
Ivan.Nginx | Alynx | Raincal
设置语言,支持中文
修改站点配置文件,仓库根目录下 _config.yml ,设置语言为 zh-Hans 支持中文:
1 | diff --git a/_config.yml b/_config.yml |
设置菜单
常见菜单有:主页、标签、分类、归档,NexT 默认只有主页和归档,需要添加标签和分类
- 新建页面
Hexo 的分类与标签文档,官网上有详细的新建流程
1 | // 1. hexo 命令新建标签页面 |
- 添加新菜单支持
修改主题配置文件,文件路径theme\next\_config.yml,把tags和categories注释取消掉
1 | menu: |
添加本地搜索
添加百度/谷歌/本地 自定义站点内容搜索
- 安装
hexo-generator-searchdb
在站点的根目录下执行以下命令:
1 | E:\01_work\00_My\06_blog\username.gitlab.io>npm install hexo-generator-searchdb --save |
- 编辑站点配置文件,新增以下内容到任意位置:
1 | search: |
- 编辑主题配置文件,启用本地搜索功能:
1 | # Local search |
设置站点相关信息
修改站点配置文件,仓库根目录下 _config.yml ,添加站点相关信息:
1 | # Site |
其他主题设置
修改主题配置文件,文件路径 theme\next\_config.yml
站点建立时间
取消如下字段的注释:since: 2017开启页面统计
找到busuanzi_count设置项,按照如下方法修改
1 | $ git diff themes/next/_config.yml |
- 开启页面阅读进度
scrollpercent: true
gitlab/github 混合发布
最近(2018.3.1之后) gitlab pages 功能异常,每次提交后 CI/CD 都会出错,提示 hexo 找不到,具体错误如下:
1 | ├── moment@2.21.0 |
提了个 issues ,后期再找解决方案。当前先采用 gitlab/github 混合发布的方法提交:
github
发布的时候,提交上去的只有转换好的html文件,当做pages使用。gitlab
保存文本及所有提交记录,方便后续追溯。
环境准备
按照上面的方法搭建 gitlab 环境及 hexo 博客,参考静态博客搭建指南 搭建 github pages,生成对应的仓库,并添加 ssh-key。
修改配置文件
上一步拿到了 github pages 仓库地址:git@github.com:***/***.github.io.git,修改当前博客的配置文件 _config.yml:
1 | diff --git a/_config.yml b/_config.yml |
注意:有些公司可能会屏蔽
github的ssh连接,因此repo中需要使用https的免密方式来访问github。
问题描述
使用ssh来测试是否能正确访问github,提示22端口被reset;原因是公司可能开防火墙等封了这种访问方式。1
2$ ssh -T git@github.com
Connection reset by 52.74.223.119 port 22解决方案
在_config.xml中使用https方式,显示指定账号密码来访问:1
2# repo: git@github.com:***/***.github.io.git
repo: https://username:password@github.com/username/username.github.io.git
安装 hexo-deployer-git
- 安装
npm install --save hexo-deployer-git,安装hexo-deployer-git发布工具。 - 配置
安装完hexo-deployer-git工具后,执行hexo d -g后会在当前blog目录下,生成.deployer-git目录,它是一个.git仓库,我们使用hexo d命令发布时,也就是将该.git仓库提交到远程目标仓库上。
使用git config user.name/email配置远程仓库的访问账号。
提交和发布
- 提交
提交是指提交到gitlab中,使用常用的git命令commit就行。 - 发布
发布是指发布到github pages中,使用hexo d -g命令发布,同时会在github中生成提交记录,但这个提交记录可读性非常差,通常为生成html更新所有目录。
遇到的问题
css is missing
访问博客时,没有任何 css 样式,解决方案为在 _config.yml 文件中修改 root 目录:
1 | diff --git a/_config.yml b/_config.yml |
hexo version 查看版本号提示本地没有 hexo
错误信息如下,查看版本提示并没有 hexo 命令?
1 | E:\01_work\00_My\06_blog> hexo version |
这是因为当前博客目录已经包含了 hexo 相关配置文件了,需要重新在 Windows cmd 终端中运行上述命令,生成 node_modules 目录