Deploy Hexo Blog to VPS |部署Hexo博客到VPS

前言

在本地搭建好Hexo博客后,接下来就是部署到互联网上去了。网上搜到的教程大部分都是将Hexo部署到GitHub Pages上面,这样省时省力,但是已经有了腾讯云的VPS还是要用一下。(当然了,GitHub上有空间限制,访问速度问题等等)

运行环境:

Linux VM_0_16_centos 3.10.0-693.el7.x86_64
Caddy服务器

准备阶段

网上流传的武功秘籍分为两种:

  • 将Hexo项目上传到VPS上面后执行 hexo server,之后配置Nginx反向代理,让域名指向 http://localhost:4000。
  • 将Hexo在本地通过 hexo generate 生成静态文件,在通过 hexo deploy 部署到VPS上面,使用Nginx直接做Web服务器。

相比第二种方式,第一种每次写博客与更新博客时候的操作会很繁琐。所以我们使用第二种方式进行部署,这样既可以将静态文件deploy到VPS上,也可以上传到Github上用作备份,操作性和安全性上都要胜于前者。

而对于第二种方式而言,常用的又有 git hook 和 rsync 两种自动部署解决方案

当我们说部署Hexo博客的时候我们在讲什么

在我们创建的博客目录下执行 hexo generate 后,hexo会将我们编辑的markdown博客自动生成静态的网页,而生成的文件就存储在 public 文件夹中,这其中的每一个html文件都是我们之后在网页中查看博客时候加载的对应文件,而我们在执行 hexo deploy 时,就是要将 public 文件夹下的文件全部部署到我们之前在Nginx配置中设置的 root /var/www/hexo 的路径中。

用rsync部署

相比较git hook方式,这一种操作更简单,对于小白更不容易出错。

安装rsync

rsync的安装分为两部分:服务器端和本地
服务器端安装:

1
apt-get install rsync

本地安装

1
npm install hexo-deployer-rsync --save

rsync配置

编辑博客文件夹目录下的 _config.yml,找到deploy添加如下代码:

1
2
3
4
5
6
deploy:
type: rsync
host: vps-ip # 这里填写你VPS的IP地址,比如:138.23.23.23
user: vps-user # 这里填写你登陆VPS所用的用户名,比如:root
root: /usr/www/blog # 这里填写你在nginx中配置的文件路径
port: 22 # SSH默认端口号,不需要修改

配置完毕!在 blog 目录下执行下面一段代码,接下来就是见证奇迹的时刻

1
hexo generate && hexo deploy

git hook自动部署方案

使用git hook和rsync得到的效果是等效的,也就是说,二者中选一种你喜欢的就可以完成配置。(ps:我用的githook,上面的尚未尝试)

git相关安装

本地

1
npm install hexo-deployer-git --save

服务器

1
yum install git

新增一个名为 git 的用户,并给用户 git 赋予无需密码操作的权限(否则到后面 Hexo 部署的时候会提示无权限)

1
2
3
adduser git
chmod 740 /etc/sudoers
vi /etc/sudoers

在vi编辑中找到如下内容

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

在下面添加一行

1
git   ALL=(ALL)     ALL

1
chmod 440 /etc/sudoers

接下来要把本地的 SSH 公钥上传到 VPS
测试一下,如果在 Git Bash 中输入 ssh git@VPS的IP地址 能够远程登录的话,则表示设置成功了。

初始化git仓库
1
2
3
mkdir /var/repo
cd /var/repo
git init --bare blog.git

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

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

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

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

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

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

1
chmod +x post-receive

本地配置

编辑博客文件夹目录下的 _config.yml,找到deploy添加如下代码

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

同样在 blog 目录下执行下面一段代码,我们也可以看到我们的文件部署到了服务器上

1
hexo generate && hexo deploy

分享到: