Hexo GitHook Vps搭建属于你自己的博客

开坑

  • 准备步骤:

    一、物理准备:

  • 一台VPS 阿里云,腾讯云等等都可以。 我本人使用的是搬瓦工的KVM,本来只是单纯的用来搭梯子,后来看内存空着也浪费,于是把之前放在GitPages里的hexo博客迁移到VPS上。
  • 一个域名,很便宜,如果你的名字不是很热门的话几十块钱可以买几年的了,我的域名是30块钱5年。

二、知识储备:

  • 基本的Linux,git操作知识,如果你是一名开发人员那么肯定搭起来毫无压力,如果您什么都不懂,那可能会有点吃力,因为涉及到一些基础的工具使用和操作。

    三、环境

  • Hexo 需求Nojs环境,我本地是比较新的版本 v8.9.1,理论上6.1以上最好,我之前用了很久的5.1.10,但是现在应该是不好使了,nodejs环境推荐使用nvm管理,很方便,如果你的网络不好建议使用阿里云的node源以及cnpm,这里不扩展了。第一个版本先把整个流程梳理一遍。

  • VPS 需要安装Nginx和Githook。nginx用来展示nodejs渲染出来的静态页面,githook用来推送更新。

四、整体思路

  • 其实hexo+vps的核心就是hexo生成静态页面然后推送到vps用nginx展示,很简单,至于theme推荐next或者我用的这个yilia,都很好,关于hexo的主题很多,大家可以自省google

OK,Here we go。


##VPS上要做的工作
1.配置服务器远程git:
每次写完文章都需要推送到你的VPS上,所以服务器要安装Git。

sudo apt-get update
sudo apt-get install git-core

VPS新增一个git用户,只用来管理git

adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers

编辑如下内容

##Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

在下面添加一行

git   ALL=(ALL)     ALL

chmod 440 /etc/sudoers

下面需要在你的本地生成一对SSH的密钥 因为你肯定不想每次推送更新的时候都输入一遍VPS的帐号密码吧?

这里有个坑,我之前看的文章是手动到.ssh文件夹底下把本地的公钥复制到VPS里,其实直接用copyid命令就能完成,还能避免遇见一些奇怪的问题,这里我之前就是死活不行,最后@Aquariuslt帮我搞定的,赞美小A!

下一步建立放部署网页的Git库

1.cd ~
2.mkdir hexo.git && cd hexo.git
3.git init --bare

测试一下,如果在 Git Bash 中输入 ssh git@VPS的IP地址 能够远程登录的话,则表示设置成功了。

如果不成功,并且你的 VPS 的 ssh 端口不是 22 的话,请在Git Bash执行vi ~/.ssh/config,输入以下内容并保存:(成功就跳过这一步)

1.Host #VPS 的 IP
2.HostName #VPS 的 IP
3.User git
4.Port #SSH 端口
5.IdentityFile ~/.ssh/id_rsa

初始化git仓库

1.mkdir /var/repo
2.cd /var/repo
3.git init --bare blog.git

执行上述代码后,我们会在 /var/repo 路径下创建了一个名为 blog.git 的裸仓库,这个仓库的功能就是将我们deploy的文件通过git hook的方式共享到 /var/www/blog 中,而要想实现这一功能我们还需要进行如下配置:

在 blog.git/hooks 目录下新建一个 post-receive 文件:

1.cd /var/repo/blog.git/hooks
2.vim post-receive

在 post-receive 中添加如下内容:

#!/bin/sh
1.git --work-tree=/var/www/hexo
2.--git-dir=/var/repo/blog.git checkout -f

设置 post-receive 文件的可执行权限:

1.chmod +x post-receive

提示:如果设置的路径文件夹并不存在,那么需要创建该文件夹并且赋予你所使用的用户的权限:

1.sudo mkdir /var/www/hexo
2.cd /var/www
3.chown git:git hexo

到这里VPS上的Git就配置好了

本地配置

在hexo的_config.yml里找到deploy添加如下代码

deploy:
    type: git
    repo: root@atomlx.com:/var/repo/blog.git # 此部分修改为你自己的登陆账号和域名,冒号后面为设置的裸仓库的地址
    branch: master

现在每次本地有更新你只需要

hexo g -d

就可以重新渲染所有文章并上传到VPS的Git库里。

分享到:
0%