hexo 简介
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 由于Hexo最终会生成静态页面,所以在部署的时候我们只需要将静态页面上传到服务器即可。结合git我们就可以实现一键自动部署。下面将介绍如何配置。
服务器准备工作
安装 git
在服务器上安装 git 工具
1 | yum install git |
新建 git 用户
在服务器上新建 git
用户(当然也可以是其他名字)
1 | useradd -d /home/git -m git |
这个命令会新建一个用户,并创建 /home/git/
目录做为这个用户的目录,同时创建一个与用户名相同的组。
配置 SSH 免密访问
在本地的电脑上(也就是你写博客的电脑上),进入 ~/.ssh/
目录(如果没有就创建一个),执行:
1 | ssh-keygen -t rsa |
一路回车,会在 ~/.ssh/
目录下生成 id_rsa
和 id_rsa.pub
两个文件。把 id_rsa.pub
文件传到服务器的 git
用户目录下。
1 | scp .ssh/id_rsa.pub git@<your-ip>:. |
使用 git
用户登录服务器,执行:
1 | mkdir -p ~/.ssh |
到此客户端机器就可以免密登录到服务器了。
如果出现不能登录的情况,可能是文件权限有问题,在服务器上做如下修改:
1 | chmod 700 ~/.ssh |
在服务器上 ~/.ssh/
目录必须要在 git
用户下创建。
服务器配置
在服务器上创建仓库
使用 git
用户登录服务器,执行:
1 | cd ~ |
配置 Git Hook
假设 web 目录为 /var/www/
,博客放在 blog
子目录中。
使用 root
用户登录服务器,进入 /var/www/
目录,并创建 blog
子目录,此时 git
用户没有该这个目录的写权限。用 ls -l
查看权限,blog
目录属于 root
用户:
1 | drwxr-xr-x 2 root root 4096 10月 27 00:19 blog |
这个目录要给 git
用户访问,blog.git
仓库收到提交后,git
用户要把提交的内容再 checkout
到 /var/www/blog/
目录。因为 root
用户创建的这个目录 git
用户没有写权限,所以要把这个目录的所有权交给 git
用户:
1 | chown git:git blog |
再用 ls -l
查看:
1 | drwxr-xr-x 2 git git 4096 10月 27 00:19 blog |
切换到 git
用户执行:
1 | cd ~ |
最后一步,处理 blog.git
提交的事件,自动更新内容到 blog
目录。在 git
用户下执行:
1 | cd ~/blog.git/hooks |
给脚本加上执行权限:
1 | chmod +x post-receive |
配置本地 Hexo 的部署信息
打开 _config.yml
文件,找到 deploy
字段,修改如下:
1 | deploy: |
如果出于安全或其它原因考虑,你修改了 SSH 默认的端口,那么上面 repository
的配置要做如下修改:
1 | repository: ssh://git@<your-ip>:<your-port>/~/blog.git |
执行以下命令部署:
1 | hexo d |
如果出现以下错误:
1 | ERROR Deployer not found: git |
是因为你还没有安装部署工具。Hexo 3.0 开始,部署工具需要单独安装:
1 | npm install hexo-deployer-git --save |
测试
当我们完成一篇文章的编辑后, 可以直接执行:
1 | hexo g -d |
将最新的博客部署到服务器上。