生命,在于不停的折腾
开篇废话
前言
一直想重构自己大一写的博客,恰巧这段时间看到了实验室挺多小伙伴都在用 Hexo 搭建自己的博客,一方面懒得再去看之前的代码了,一方面 Hexo 确实有很多不错的主题…
于是乎,就这么开始了 Hexo 的搭建之旅。
思路
一开始的想法是直接在 VPS 上搭 Hexo 环境,由 Hexo 服务解析成静态页,然后通过 Hexo Server 对外服务。这样的确搭建起来十分快速,可是需要本地编写 MarkDown 文档并手动传至服务器,显得很傻。
那么,换个思路——在本地搭 Hexo 环境,解析成静态页后提交到服务器,通过 Git Hooks 自动更新站点目录文件,然后由 VPS 的 Nginx 对外服务,这样 VPS 上只需有 Git 和 Nginx 的环境即可。
搭建过程
搭建Git服务器 (CentOs7)
第一步
安装 Git , yum 源的 git 版本不太新,我是编译安装的。
1 | $ yum -y install git |
以下是编译安装过程
1 | //下载编译工具 |
第二步
创建 git 用户,用来运行 git 服务。
1 | $ sudo adduser git |
第三步
创建证书登录,刚创建的git用户它是它是没有 ~/.ssh/ 和 ~/.ssh/authorized_keys 文件的 ,因此这里需要手动创建,这里为了避免权限的问题 ,这里的文件创建全部使用 git 用户处理。
1 | //切换用户 |
若本地没有 SSH 公钥可以用 ssh-keygen 指令生成公钥。这里也不多说了。
要注意的是,公钥复制到 ~/.ssh/authorized_keys 时,不能直接粘贴复制,要用 cat 指令。
1 | $ cat [公钥] > ~/.ssh/authorized_keys |
第四步
初始化 git 仓库,先选定一个目录作为 Git 仓库。
1 | $ mkdir blog.git |
Git 就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的 Git 仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的 Git 仓库通常都以 .git 结尾。然后,把 owner 改为 git .
1 | $ sudo chown -R git:git sample.git |
第五步
禁用 shell 登录,出于安全考虑,第二步创建的 git 用户不允许登录 shell ,这可以通过编辑 /etc/passwd 文件完成。
1 | git:x:1001:1001:,,,:/home/git:/bin/bash |
改为:
1 | git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell |
这样, git 用户可以正常通过 ssh 使用 git ,但无法登录 shell ,因为我们为 git 用户指定的 git-shell 每次一登录就自动退出。
到这一步, git 服务器就搭建完成了。
配置Git Hooks
这个 Git Hooks 的作用就是当仓库收到 git push 后,能触发一段 shell 脚本。脚本将静态文件复制到网站目录,通过 nginx 服务器就可以正常访问博客了。
1 | $ su - git |
输入以下代码后保存退出
1 |
|
赋予脚本执行权
1 | chmod +x post-receive |
本地配置
hexo
首先肯定得安装 Hexo 及相关环境,在这里就不多说了,请看官方文档:Hexo。
配置
修改 Hexo 的配置文件 _config.yml
1 | deploy: |
全文到这里就完成了 Hexo 博客的自动部署,希望对你有帮助。