一直想有个简单而且方便的blog,出门的也就wordpress居多,但是编辑一个文章实在太麻烦,后来接触过Jekyll,采用的是ruby,结构非常喜欢采用Makedown来编写文章,但对于我一个前端开发来说我想Hexo 是最好的选择.

本地安装Hexo

1
$ npm i -g hexo

使用npm全局安装hexo,来创建你的hexo blog项目

本地创建Hexo项目

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

首先使用hexo命令创建一个新的项目\(项目文件夹名称),然后进入项目文件夹中,最后使用npm i安装node_modules依赖包

本地运行项目

1
$hexo serve

使用以上命令启动服务,然后查看控制台信息用浏览器访问

安装hexo-deployer-git

1
$npm i —save

hexo-deployer-git使用于git提交后自动一件部署项目的组件,后面会具体说明

本地Hexo项目初始化git仓

1
2
$cd <folder>
$git init

进入项目目录,然后初始化git仓

接下来很关键,在你的VPS服务器中创建git用户配置git仓和部署项目的文件夹,本项目以Centos为例

VPS新建用户与用户授权

1
2
$adduser git
$vim /etc/sudoers

打开并且编辑 sudoers文件,在内部增加一条git ALL=(ALL:ALL) ALL

创建项目服务文件夹并授予git用户访问权限

1
2
3
$cd /var/www
$mkdir myblog
$chown git:git -R myblog

进入/var/www目录(我一般nginx项目目录都放在/var/www中),使用mkdir命令创建一个myblog的项目文件夹并使用chown来给git用户授予权限

使用git用户创建项目远程仓

1
2
3
4
$su git
git$cd ~
git$mkdir myblog.git
git$git --bare init

使用su切换liunx用户,然后进入用户的根目录创建git仓。然后初始远程裸库

git init 创建本地仓库, git init –bare 创建远端仓库

创建git的钩子部署

1
2
$su git
git$vim hooks/post-receive

创建git的钩子,并编辑,在钩子中添加

1
2
#!/bin/bash
git --work-tree=/var/www/myblog --git-dir=~/myblog.git checkout -f

使用SSH让git与本地无需密码提交项目

1
2
$ssh-keygen -t rsa
$vim ~/.ssh/id_rsa.pub

拷贝本地公钥,到VPS的git用户根目录进入.ssh文件夹内将公钥添加至 authorized_keys

最后使用配置_config.yml

1
2
3
4
deploy:
type: git
repo: git@yourvps:~/myblog.git
branch: master

这一步的将编译后的静态资源进行git管理,每次使用hexo g —deploy后,先通过hexo编译成静态文件,然后push到远程服务器,远程服务器接受到后会通过钩子(post-receive) 执行相关命令讲git内编译好的文件copy到nginx指定域名目录内,最后就可以通过域名访问了

可以通过github或者自己的本地仓管理源码

既然文件都配置好了,再使用nginx绑定域名后指向/var/www/myblog目录