实战自动化部署hexo记录

难受,两周前把自己的服务器换成自己弄得docker以后,就一直在折腾自己的博客,先是放弃了自己写的博客,换到typecho,然后在换到wordpress,最后换到了 hexo。

先说说放弃自己博客的原因,因为自己是在不想在模板上花费太多的心思,其实后台我很满意的,毕竟自己写的,功能足够自己用就好了。

再说说 typecho和 wordpress,前者轻量,但是可能因为我用的稳定版的的原因,有一些小问题,还懒得去弄,就放弃了。wordpress呢,太重了,太繁杂了。也弃了,其实我就是想要一个写字的地方,简简单单就好,不需要太多的东西,纠结了一圈之后,就用hexo把。

我是这么做的,配置原文什么的我本地有一份,github上我存了一份,这样多台电脑也可以同步了。然后网站部署在了阿里云上面。

下面就说说操作步骤。

hexo 的安装配置以及主题相关我就不多说了,官方文档好得很,我就所说我的部署部分

首先,先看服务器部分,我们首先配置 ssh 的自动登录,这样以后自己管理以及 hexo d 的时候也会很省事

1
2
3
4
5
1. 在本机生成SSH密钥
ssh-keygen -t rsa
2. 然后将本地公钥拷贝到服务器
ssh-copy-id root@IP
注意 非 22端口 同样增加 -p参数

简单两步,以后就不用再输入密码了。

然后在服务器上找一个地方存放我们的git相关的东西,其实就是配置一个钩子

1
git init --bare 你的文件夹名称

bare 的作用是创建一个裸仓库,我个人觉得这个目录就是我们以往的.git文件夹。

然后我们进入这个目录,进入 hooks 文件夹,执行

1
vi post-receive

这个就是编辑我们的钩子,这个钩子就是收到推送的时候我们的操作。然后我们编辑这个文件

1
2
#! /bin/sh
git --work-tree=/home/docker-nmp/www/blog_hexo(真正存放我们网页的地方) --git-dir=/root/blog.git(这个就是我们上一步创建的git bare 文件夹) checkout -f

第一行就是表示是个sh文件,这么说可能不准确,我们姑且这么认为。 然后 work-tree 表示需要 clone 的地方, git-dir 是指我们的git配置的位置, checkout 就不说了, -f 就是强制的意思,忽略本地修改。

然后执行

1
chmod +x post-receive

把这个文件标记为可执行的,这里不要忘记

这些都弄好后,一定要保证work-tree是存在的,毕竟 git 又不帮我们创建文件夹。如果不存在,也会提示我们成功。这个很坑.

服务器这边就搞定了

现在开始修改本地文件, 我们编辑根目录的_config.yml 文件。

找到 deploy, 如下

1
2
3
deploy:
type: git
repo: 你的用户名@你的ip:就是上面你设置的git bare 目录

到这,全部搞定可以收工了,注意 用户名需要注意权限问题防止没权限写不进文件夹。

然后我们执行 hexo g; hexo d 不出意外相关的文件夹就会有我们的文章了,这时候我们把 nginx 设置好,博客就可以访问咯,收工