build by hexo

HELLO WORLD

Tony影响,一时兴起就开始建这个博客。把过程写下来也算是留个记录。

环境和工具

平台是winows 7 X64,同时要保证可以顺利访问Github。都不能上Github怎么来建站?当然其他代码托管网址应该也是可以的(猜测)。我这里使用Shadowsocks来访问国际网络。这里有一个坑。
命令行工具用的是Cmder。原因嘛……颜值比较高。这里是另一个坑。 使用其他工具也是可以的,但是不建议使用windows自带的cmd工具。如果平台是windows 10的话,可以试试自带的Bash
Cmder是一个开箱即用的工具。在其官网下载回来后打开就可以使用了。
Cmder 界面
注意:为了以后的方便,请务必下载完整包

安装 Hexo

Hexo官网上提供的安装方式是npm,所以需要先安装node.js
这里推荐使用chocolatey来安装。自己手动安装的话,还需要配置环境变量。

安装 chocolatey

以管理员权限打开Cmder。输入命令

1
λ @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

这里全部使用chocolatey的默认设置,如果需要自定义的话,访问Installing Chocolatey

安装 node.js

作为一个windows下的包管理器,chocolatey以命令行安装软件。安装node.js,需要在Cmder中输入

1
λ choco install nodejs

然后耐心等待完成。
npm作为node.js的默认包管理工具,安装完成后就可以直接使用了。

安装 Hexo

对照Hexo网站的教程,就剩下最后一步了

1
λ npm install -g hexo-cli

没有出错的话,Hexo的安装就已经完成了。

建立 GitHub Pages

Github Pages是一项不限流量的静态页面托管服务,本身是为了展示项目和开发者用的。现在更多的是当作小型Blog来使用。

申请 Github 账号

就像其他网站申请账号一样,能不填就可以不填

链接 Github

默认使用SSH链接,为了安全需要验证SSH Key。这段参考网上教程SSH部分

检查SSH keys的设置

1
$ cd ~/. ssh 检查本机的ssh密钥

如果提示:No such file or directory 说明你是第一次使用SSH

生成新的SSH Key

1
2
3
$ ssh-keygen -t rsa -C "邮件地址@youremail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):<回车就好>

然后系统会要你输入密码:

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

在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入。这个设置是防止别人往你的项目里提交内容。
注意:输入密码的时候没有*字样的,你直接输入就可以了。
最后看到这样的界面,就成功了
SSH
请原谅我的盗图

添加SSH Key到GitHub

在本机设置SSH Key之后,需要添加到GitHub上,以完成SSH链接的设置。

  1. 打开本地id_rsa.pub文件。可以通过EverythingListary输入文件名直接找到文件。打开的工具系统自带的记事本就可以了。或者将密匙复制到剪贴板中
    1
    λ clip < ~/.ssh/id_rsa.pub
  2. 登陆Github。点击右上角的头像:Setting->SSH and GPG keys->New SSH key
  3. 输入Title,将密匙复制到Key输入框

测试 SSH

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

1
$ ssh -T git@github.com

如果是类似下面的反馈:

1
2
3
The authenticity of host '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就好

1
Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.

yourname部分是你的Github账号就说明链接成功。

一点小事

Git会根据用户的名字和邮箱来记录提交。GitHub也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成自己的

1
2
$ git config --global user.name "yourname"//用户名
$ git config --global user.email "邮件地址@youremail.com"//填写自己的邮箱

建立 Github Pages

这里基本可以跟着官方教程走。
建立名称为username.github.iorepository,其中username用你的账户名替换。
在该repositorySetting标签页下找到GitHub Pages,点击Launch automatic page generator。接着要你确认一些名称啥的。不用管,点击网页下方的Continue to layouts。然后是选择主题,随便选一个看得顺眼的,点击Publish page。完成!
到此为止,专属的Blog已经可以算建立了。浏览器访问username.github.io(username是账户名)已经可以看到一个网页了。

建站

总体的思路是:使用Hexo将本地资源生成静态站点,上传到Github。也就是说:前面的Github Pages名称主题什么的全部都会被替换成本地生成的。这里跟着Hexo官方教程走。
安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。

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

第一条命令就碰到一开始提到的坑了:npm依赖下载不了……就算Shadowsocks开启全局,也不能拯救。
处理方法是使用国内镜像。在执行以上命令之前,先执行:

1
npm config set registry http://registry.cnpmjs.org

或者

1
npm --registry http://registry.cnpmjs.org info express

两者都是临时的。
现在再执行上面的就不会卡网络了。

1
2
$ hexo generate #生成站点
$ hexo server #启动服务器

浏览器打开http://localhost:4000就可以看到默认的Hexo Blog了。

部署

本地已经有了一个网站,需要把它放到网上。
打开Hexo站点目录下的_config.yml。找到最后的deploy部分

1
2
3
4
5
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@github.com:yourname/yourname.github.io.git

其中yournam替换成Github账号。
到最后激动人心的上传部分了。

1
$ hexo deploy

结果是:失败!这里就是开头提到的“另一个坑”:Cmder默认不启用ssh-agent
解决办法是在Cmderinit.bat文件中加上这么一段

1
2
3
4
5
6
@echo off
ssh-agent | grep -v echo | sed -e "s/^/@set /" | sed -e "s/;.*$//" - > call.cmd
call call.cmd
del call.cmd
ssh-add "%HOME%\.ssh\id_rsa"
@echo on

重新打开Cmder,执行

1
$ hexo deploy

没有报错的话就可以在yourname.github.io访问自己的Blog了。