Hexo搭建Github-Pages博客记录

一直都很想搭一个自己的博客, 但一直很忙(其实是懒)没弄, 最近终于搭建好了, 过程中也遇到了一些问题, 写个流水账记录下.

准备工作

  • 一个github账号
  • 安装了node.js, npm, git (mac用户的安装xcode就已经装好git了)

搭建github博客

创建仓库

新建一个用户名.github.io的仓库, 用户名必须为你的github用户名. 比如我的用户名为soober, 那么需要创建soober.github.io的仓库.

配置SSH key

提交代码需要拥有你的github权限, 使用ssh key来解决本地和服务器的连接问题

用git bash(mac用户, 用终端即可)执行如下命令:

1
cd ~/. ssh

1
ssh-keygen -t rsa -C "邮件地址"

一路回车(密码可以不用输入,直接回车)最终会生成一个文件在用户目录下,找到.ssh\id_rsa.pub文件,复制里面的内容,打开你的github主页,进入个人设置 -> SSH and GPG keys -> New SSH key, 将复制的内容粘贴到key那里,title自己写一个,保存。

  • 测试SSH配置是否成功
    1
    $ ssh -T git@github.com

如果看到以下信息,说明配置成功

Hexo框架搭建

Hexo是一个简单、快速、强大的基于 Github Pages 的博客发布工具,支持Markdown格式,有众多优秀插件和主题。
由于github pages存放的都是静态文件,博客存放的不只是文章内容,还有文章列表、分类、标签、翻页等动态内容,假如每次写完一篇文章都要手动更新博文目录和相关链接信息,相信谁都会疯掉,所以hexo所做的就是将这些md文件都放在本地,每次写完文章后调用写好的命令来批量完成相关页面的生成,然后再将有改动的页面提交到github。
[官网] (http://hexo.io)
[github] (https://github.com/hexojs/hexo)

安装

1
$ npm install -g hexo

初始化

选择博客存储位置, 创建hexo文件夹,然后初始化

1
2
$ cd hexo
$ hexo init

hexo会自动下载一些文件到这个目录,包括node_modules,目录结构如下图:

其中, _config.yml这里面都是一些全局配置,每个参数的意思都比较简单明了,就不作详细介绍了。
需要特别注意的地方是,冒号后面必须有一个空格,否则可能会出问题。

接着生成和启动hexo服务

1
2
$ hexo g # 生成
$ hexo s # 启动服务

执行以上命令之后,hexo就会在public文件夹生成相关html文件,这些文件将来都是要提交到github去的:

hexo s是开启本地预览服务,打开浏览器访问 http://localhost:4000 即可看到博客预览内容(使用ctrl+c结束本地预览)

主题设置

一个好看的主题可以让你的博客看上去赏心悦目, 我选择用了Next主题, 你可以再这里选择你喜欢的主题样式

首先下载这个主题:

1
2
$ cd your-hexo-site
$ git clone https://github.com/iissnan/hexo-theme-next themes/next

下载后的主题都在hexo/themes下存放

接着修改hexo根目录_config.yml中的theme: landscape改为theme: next,如下:

1
2
3
4
5
6
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
# theme: landscape
# theme: yilia
theme: next

然后重新执行hexo g来重新生成。如果出现一些莫名其妙的问题,可以先执行hexo clean来清理一下public的内容,然后再重新生成。

初始化本地git仓库

如果你的本地仓库还没有进行远程仓库关联, 需要进行以下步骤
设置Git的user name和email:

1
2
$ git config --global user.name // 你的github用户名,非昵称
$ git config --global user.email // 填写你的github注册邮箱

在本地的hexo init生成的文件夹中初始化git仓库:

1
$ git init

将本地仓库和远程仓库连接(这一步貌似可以不做):

1
$ git remote add origin git@github.com:your_github_user_name/your_github_user_name.github.io.git(远程仓库ssh地址)

做完以上这些步骤,说明你的仓库可以使用ssh方式来上传下载代码,而不需要输入用户名和密码了

网站部署

首先, 配置hexo根目录_config.yml中有关deploy的部分:

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: git@github.com:soober/soober.github.io.git
branch: master

接着, 安装插件

1
npm install hexo-deployer-git --save

然后执行发布命令

1
2
3
$ hexo clean  //清除缓存文件db.json和已生成的静态文件public
$ hexo g //生成网站静态文件到默认设置的public文件夹
$ hexo d //部署网站到设定的仓库

执行这个命令可能会碰到一些问题, 终端里会直接给出修改建议, 我是按照给出的参考命令执行的, 具体问题忘记截图了=-=

此时你的博客就部署到了page上了, 打开你的用户名.github.io, 即可看到你发布到github的博客了, hexo默认会帮你创建好一篇helloworld文章

常用hexo命令

常见命令

1
2
3
4
5
6
7
hexo new "postName" #新建文章
hexo new page "pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
hexo deploy #部署到GitHub
hexo help # 查看帮助
hexo version #查看Hexo的版本

缩写

1
2
3
4
hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy

组合命令

1
2
hexo s -g #生成并本地预览
hexo d -g #生成并上传 或者: hexo g --d

绑定域名

  • 不想绑定域名的可以跳过这一步骤.
  • 想绑定域名还没有域名的, 可以去阿里或者腾讯注册一个域名, 我是在腾讯买的一个.com域名. 传送门-腾讯云
  • 有个域名之后, 进行域名解析.域名解析配置最常见有2种方式,CNAME和A记录,其中CNAME填写域名,A记录填写IP. 获取ip需要你去ping一下你的用户名.github.io

(腾讯的需要进行个人身份认证之后才能正常访问域名)

  • 设置CNAME

在 hexo 项目下,source 文件夹下面创建 CNAME 文件(没有后缀名的),在里面写上购买的域名

然后在 github 上面,打开 username.github.io 项目的(Settings)设置,然后在 GitHub Pages的 Custom domain设置里填上购买的域名。比如:

好了,新域名配置完成,可以访问了

一些报错处理

ERROR Plugin load failed: hexo-server
原因:
Besides, utilities are separated into a standalone module. hexo.util is not reachable anymore.
解决方法,执行命令:

1
sudo npm install hexo-server

有关-ejs, -stylus, -marked的一些错误提示
解决办法, 执行命令:

1
2
3
4
5
6
7
npm install hexo-renderer-ejs --save
npm install hexo-renderer-stylus --save
npm install hexo-renderer-marked --save
//这个时候再重新生成静态文件,命令:
hexo generate (或hexo g)
//启动本地服务器:
hexo server (或hexo s)

参考

http://blog.haoji.me

谢谢你赏我糖果吃