Wordpress有点臃肿,反应速度一般,于是花下班时间把整个博客迁移到了Hexo上。更加轻量,更加简洁,速度更快。
一、Hexo简介
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
二、Hexo和Wordpress区别
- Hexo跟Wordpress不一样
- Hexo是一个node.js构建的博客工具,一篇文章就是一个markdown文章,然后Hexo可以把文章渲染成html代码,也就是静态页面,更加轻量
- Wordpress是用php写出来的博客系统,有后台管理系统,有资源管理系统,更加的全,同时也更加的臃肿
我之前一直没有备案,所以之前用的境外服务器并不稳定。如果想要进行博客的迁移会非常麻烦。我需要
- 安装Mysql
- 安装Apache2
- 安装PHP
- 配置PHP和 Mysql
- 下载Wordpress程序
- 安装phpadmin数据库管理
- 配置博客系统
非常麻烦,每一次大概需要十来分钟的样子,系统也会占用很多的资源,需要启动Mysql、PHP和Apache2。
而且Wordpress备份很麻烦,需要备份源码和数据库。
但是Hexo只有两部分,本地写文章,用一个git仓库保存源码,然后一个git仓库保存生成的静态文件。没有数据库什么的,两个git仓库或者一个git仓库两个分支就OK。方便、快捷。
对于开发环境来说,有git,安装Node.js,然后把仓库拉下来就可以写作了,写完了push到仓库,没有任何备份成本。
对于博客的服务器来说,更简单了。安装Nginx,反向代理一个文件夹。然后把生成的静态文件仓库拉下来就好了。
三、Hexo搭建
Github地址 https://github.com/hexojs/hexo
搭建的教程比较简单,文档中也有详细的说明,这里就不赘述了。
四、仓库管理
- 我的开发环境是本机,安装了Hexo,源码对应了一个github源码仓库。
- 我的线上环境是腾讯云的服务器,只安装了git和Nginx反向代理,对应的github静态文件仓库。
具体步骤如下:
1、修改配置文件
在hexo/_config.yml中配置静态文件仓库地址即可,或者一个博客仓库两个分支也可以,我为了便于管理用了两个仓库。
1 | deploy: |
2、安装依赖
1 | npm install hexo-deployer-git --save |
3、配置源码仓库
把hexo这个文件夹绑定到github源码仓库,这样文章编写完成后,在hexo文件夹下保存markdown到源码仓库。然后执行命令hexo g -d 自动将编译后的文件传到静态文件仓库。
五、全自动构建
但是这样腾讯云服务器不会自动更新最新的静态文件仓库,于是配置github勾子,简单的理解就是github在收到你push请求的时候会发送一个请求到指定地址,然后腾讯云那边收到请求执行一下git pull更新代码即可。
1、配置勾子
- 打开github仓库->Settings->Webhooks
- Add webhook
我的配置如下
- Payload URL 是你的IP地址:请求名称
- Content type 选application/json
- Secert 密钥
- Which events would you like to trigger this webhook? 选Just the push event. 因为我们只需要在本地push后服务器pull一下即可
2、服务器配置
2.1 新建webhooks.js
在服务器nginx代理的静态文件夹下新建文件
1 | var http = require('http'); |
2.2 新建deploy.sh
1 | git reset --hard |
2.3 安装node.js和npm
上方的脚本是基于node.js的,所以我们在服务器也需要安装node.js 和npm
我的服务器系统是ubuntu 安装命令如下,centos和debian请麻烦查一下安装命令
1 | sudo apt-get install nodejs |
2.4 安装forever
forever是一个forever是一个nodejs守护进程,完全由命令行操控。forever会监控nodejs服务,并在服务挂掉后进行重启。
安装命令如下
1 | npm install -g forever |
启动文件
1 | forever start webhooks.js |
2.5 回顾
简单点说就是GitHub在收到push请求的时候,给服务器发送一个请求,服务器收到的时候执行deploy.sh这个文件,我们让他git pull,这样就能实现全自动构建。
六、博客修改
博客的自动构建OK了,那么下来就需要对博客进行配置了,其中觉得不够精致的地址或者看着不舒服的地方进行修改。详见下篇博客。