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 |
将最新的博客部署到服务器上。