使用 GitHub 和 Hexo 搭建轻博客

使用GitHub和Hexo搭建轻博客,并为GithubPages绑定域名,启用SSL

Hexo

Hexo是一个快速、简洁且高效的博客框架

安装

安装过程只需要疯狂的点击 下一步 就好,安装完成后,即可使用GitBash安装Hexo

1
$ npm install -g hexo-cli

建站

安装Hexo完成后,执行下列命令,Hexo将会在指定文件夹中新建所需要的文件

1
2
3
$ hexo init <folder>
$ cd <folder>
$ npm install

接着输入以下代码,之后就可以在浏览器中通过 localhost:4000 预览

1
$ hexo clean && hexo generate && hexo server

Hexo 常用命令

1
2
3
4
5
$ hexo clean            //清理
$ hexo generate //生成
$ hexo server //启动服务
$ hexo new //新建文章
$ hexo deploy //部署

配置站点信息

可以在_config.yml中修改大部份的配置

修改主题

如果觉得默认的主题不好看可以到hexo.io themes查找自己喜欢的主题clone,也可以根据自己的需要手动修改

集成插件

也可以根据自己的需要集成一些插件,一些主题都有集成插件

部署到 GitHub

GitHub是一个软件项目托管平台

创建一个 Repository

Repository name 格式为:Your_GitHub_name.github.io

提交

修改_config.yml文件中的配置节

1
2
3
4
deploy:
type: git
repository: "Your_Clone_with_HTTPS_URL"
branch: master

之后执行以下语句,将Hexo提交到GitHub。中途可能会要求登录

1
2
3
$ hexo clean && hexo generate && hexo deploy
//也可以使用简写
$ hexo clean && hexo g && hexo d

至此,一个基于GitHub和Hexo搭建的轻博客已经成型,你现在可以通过:Your_GitHub_name.github.io对你的站点进行访问

绑定域名

1.在自己的域名提供商的 DNS 中新建一条 CNAME 记录,指向自己的GitHub项目地址

2.在站点下的 source 文件夹中新建一个名为 CNAME全部大写无后缀名 )的文件。在文件中输入自己的网址,不需要加 http:// 或者 https://

1
blog.irember.com

之后只需等待域名解析成功,便可以通过自己的域名访问到在GitHub上创建的站点。推荐使用MarkDown进行写作,关于MarkDown的语法参见MarkDown语法


部署到 GitLab

GitHub限制了搜索引擎的抓取,如果有相关需建议更换到GitLab

创建一个 Repository

Repository name格式为:Your_GitLab_name.gitlab.io

提交

GitLab和GitHub部署的不同之处在于:GitHub 只需要提交发布后的文件而GitLab则需要提交源文件然后在服务器生成静态文件。为了告诉服务器如何生存静态文件,需要在项目的根目录下添加一个名为 .gitlab-ci.yml 的文件。文件大致内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
image: node:8.11.2

pages:
cache:
paths:
- node_modules/

script:
- npm install hexo-cli -g
- npm install
- hexo deploy
artifacts:
paths:
- public
only:
- master

由于Hexo未对GitLab提供支持所以无法通过hexo d命令直接提交到GitLab,这意味着_config.yml文件中的 deploy 配置节已经失去了存在的意义。接下来使用git命令提交

初始化仓库

1
git init

添加一个远程仓库

1
git remote add origin "Your_Clone_with_HTTPS_URL"

追踪所有文件

1
git add .

将修改提交到本地库

1
git commit -m "init blog"

将修改推送到远程库

1
git push -u origin master

中途可能会要求登录,提交到远程库后如果 Jobs passed 则证明构建成功

绑定域名

获取证书

在绑定域名之前先对SSL做一些准备。GitHub更新后默认对.github.io二级域名和自定义域名提供SSL支持,采用的是Let’s Encrypt颁发的免费证书。GitLab也提供免费SSL的支持但是颁发的证书无法用于自定义域名。
这里我同样采用Let’s Encrypt的免费证书,并通过ZeroSSL获取证书。

绑定域名

在自己的域名提供商的DNS中新建一条 CNAME 记录,指向自己的GitLab项目地址

进入Repository主页的 Settings > Pages > New Domain
填写自己的域名、Certificate 和 Key。这意味着 source 文件夹中名为 CNAME 的文件也失去了存在的意义。之后通过DNS验证了自己对域名的所有权之后就可以通过域名访问了。但GitLab并不会将 http:// 的访问重定向到 https:// 上,官方给出的 改善 方案是通过 link 标记和 JavaScript 代码进行声明和跳转。


错误处理

hexo: command not found

原因在于没有环境变量。可以安装高版本的Node 或者 找到 hexo 部署目录将完整路径加入用户环境变量中,保存之后重新打开CLI

ERROR Deployer not found: git

以管理员权限,在站点目录执行以下命令

1
npm install hexo-deployer-git --save

The project you were looking for could not be found

替换添加远程仓库的命令

1
2
3
4
5
//before
git remote add origin "https://gitlab.com/Your_GitLab_name/Your_GitLab_name.gitlab.io.git"

//after
git remote add origin "https://Your_GitLab_name@gitlab.com/Your_GitLab_name/Your_GitLab_name.gitlab.io.git"

设置 Git 账户

1
2
git config --global user.email "Your_GitHub_Email"
git config --global user.name "Your_GitHub_Name"

参考

GitLab Pages examples / hexo·GitLab
GitLab Pages custom domains and SSL/TLS Certificates
Tutorial: Securing your GitLab Pages with TLS and Let's Encrypt | GitLab