假如你没有云服务器,但是又囊中羞涩不想购买云服务器,那么用Hexo+GitHub建立一个静态的网站或博客也是一个不错的选择!而且你还可以购买域名解析到对应的Github-Pages的URL上。不花钱而且能存上自己写的笔记博客,甚至自己写的app也有show-web了,可以说是非常美滋滋了~

本文不再赘述Git、nodejs、npm(&cnpm)的安装和使用方法,要求最低会简单使用GitHub

准备工作

  • GitHub官网注册你的账号,如果有账号忽略本条。码云应该同样适用,作者没在码云搭建过,不能确定
  • 注册之后创建一个名为”XXX.github.io”的空项目(XXX为你的GitHub用户名),例如作者的GitHub用户名为umatobu,那么我创建了这样一个项目:umatobu.github.io

有了这个项目之后,我们在这个项目提交一个名为“index.html”文件,内容如下。如此之后,你再浏览器输入链接youusername.github.io即可访问到你的博客,虽然这个网站只有一行“hello world”。

1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>I'm title</title>
</head>
<body>
<h1>Hello Word</h1>
</body>
</html>

由此可以看出,其实在GitHub上搭建静态网站,其实就是创建一个特殊名称的项目并且这个项目的根目录有名为“index.html”的文件。这个前提有了之后,访问youusername.github.io其实就访问到了“index.html”的文件。

Hexo 安装

1
npm install hexo-cli -g

淘宝 NPM 镜像

由于npm服务器在国外,很多时候使用npm包管理来安装包的时候,会出现安装失败或者速度较慢,这里我推荐使用淘宝的npm镜像,命令如下:

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

然后npm命令替换为cnpm就可以愉快的安装npm包了~

本地搭建

更为详细的命令,例如开启debug调试、指定端口等等,请查看Hexo官网文档。运行以下命令,在浏览器输入http://localhost:4000即可查看到自己的博客。

1
2
3
4
5
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo s --debug --port 4000

如果想加更多的博客文章,使用以下命令,然后在source目录的_posts文件夹下找到新添加的文章md文件编辑它,然后再次 hexo s 在本地进行预览:

1
hexo new "postName"

切换主题的话,现在theme文件夹下载你想要的主题,然后编辑根目录_config.yml文件的theme配置项:

1
theme: xxx

配置ssh-key

我们如何让本地 git 项目与远程的 GitHub 建立联系呢?用 SSH keys。首先我们需要检查电脑上是否已有ssh key:

1
cd ~/.ssh 检查本机的ssh密钥(如果提示的是No such file or directory,说明你是第一次在本机上使用,需要使用以下命令创建一个)
1
2
3
ssh-keygen -t rsa -C "邮件地址@http://youremail.com" (此处的邮箱地址,推荐使用你的GitHub账户邮箱)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/youruserdirectory/.ssh/id_rsa):<回车就OK>

然后系统会要你输入密码,在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入。这个设置是防止别人往你的项目里提交内容。

1
2
$ Enter passphrase (empty for no passphrase):<输入密码>
$ Enter same passphrase again:<再次输入密码>

最后添加ssh key到GitHub:

  • 打开本地 id_rsa.pub 文件(如:/Users/fuujiro/.ssh/id_rsa.pub)。此文件里面内容为刚才生成的密钥。如果看不到这个文件,你需要设置显示隐藏文件。准确的复制这个文件的内容,才能保证设置的成功。
  • 登陆 GitHub 系统。点击右上角的Account Settings—>SSH Public keys—>add another public keys
  • 把你本地生成的密钥复制到里面(key文本框中), 点击add key就ok了

测试。可以输入下面的命令,看看设置是否成功,git@GitHub.com 的部分不要修改:

1
ssh -T git@GitHub.com

按道理会显示下面的反馈:

1
2
3
The authenticity of host 'http://GitHub.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

输入yes就ok,按道理会显示::

1
Hi (你的GitHub名字)! You've successfully authenticated, but GitHub does not provide shell access.

恭喜你!SSH Key 配置成功!本机已成功连接到 GitHub。

部署到GitHub

配置Git信息,已经配置过请忽略:

1
2
git config --global user.name "你的git用户名"
git config --global user.email "你的git登录邮箱"

修改根目录_config.yml文件的deploy配置项:

1
2
3
4
deploy:
type: git
repo: git@github.com:{username}/{username}.github.io.git
baranch: master

安装hexo deploy插件:

1
cnpm install hexo-deployer-git --save

部署到GitHub:

1
hexo clean & hexo g & hexo d