将hexo部署到腾讯云上

最近发现腾讯云学生有优惠,同时因为多说即将停止服务,不得不更换评论插件,看了很多国内的三方评论插件,觉着畅言做的比较漂亮,但是需要备案号。因为腾讯云学生又有优惠,还可以送域名,所以就决定准备将博客迁移到腾讯云上,目前域名正在备案,博客内容已经上传到腾讯云服务器上了,就等到备案完成之后开启解析,也就有了一个属于我的域名,想想还有些激动。
在做hexo部署到服务器上时也参考了很多资料,最后找到了这个比较靠谱,过程也比较详细。我的服务器是Centos的,之前用了Ubuntu,但是觉着腾讯云给的Ubuntu的用户不是root账号,对于我这种不是大神的人来说比较麻烦,所以改成了Centos。

配置ssh访问

不知道为什么如果我不配置ssh免密访问的话我在hexo d的时候就会提示权限错误,所以不得不折腾一大堆来配置ssh免密访问,关于ssh免密访问我之前也写过博客,网上也有很多资料,就不赘述了。

云端服务器配置

在这部分主要完成以下三件事情:

  • 为本地的 hexo_blog 配置一个部署静态文件的远程仓库。
    许多教程均以 Github 作为中转的平台,但是会让整个流程变得更为复杂,而且会受服务器与 Github 之间网络情况的影响。假如 Github 宕机或者被封,你将无法更新博客。
  • 配置 Nginx 托管博客文件目录。
  • 配置远程仓库自动更新到博客文件目录的钩子。

创建私有 Git 仓库

/var/repo/下,创建一个名为hexo_static的裸仓库(bare repo)。

如果没有/var/repo目录,需要先创建;然后修改目录的所有权和用户权限。

1
2
3
mkdir /var/repo/
chown -R $USER:$USER /var/repo/
chmod -R 755 /var/repo/

因为我是直接使用root账号操作的,所以没有太多权限问题,如果不是root账户的话可能需要在命令前加上sudo

然后,执行如下命令:

1
2
cd /var/repo/
git init --bare hexo_static.git

这一步主要是初始化裸仓库,只有初始化之后我们后面才可以向这个仓库中添加代码。

配置 Nginx 托管文件目录

接下来,创建/var/www/hexo目录,用于 Nginx 托管。

1
2
3
mkdir -p /var/www/hexo
chown -R $USER:$USER /var/www/hexo
chmod -R 755 /var/www/hexo

然后去修改Nginx的默认配置,这个文件夹因人而异,我的是在:

1
vim /etc/nginx/conf.d/default.conf

将其中的 root 指令指向 /var/www/hexo 目录。

1
2
3
4
5
6
7
8
9
...

server {
listen 80 default_server; #域名备案完成后需要修改这里
listen [::]:80 default_server ipv6only=on;

root /var/www/hexo; # 需要修改的部分
index index.html index.htm;
...

最后,重启 Nginx 服务,使得改动生效。

1
service nginx restart

直接把nginx服务加到系统启动项中。

创建 Git 钩子

接下来,在服务器上的裸仓库 hexo_static 创建一个钩子,在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下,即 /var/www/hexo。

在自动生成的 hooks 目录下创建一个新的钩子文件:

1
vim /var/repo/hexo_static.git/hooks/post-receive

在该文件中添加两行代码,指定 Git 的工作树(源代码)和 Git 目录(配置文件等)。

1
2
3
#!/bin/bash

git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f

保存并退出文件,并让该文件变为可执行文件。

1
chmod +x /var/repo/hexo_static.git/hooks/post-receive

至此,服务端的配置基本结束。

修改hexo设置

完成服务器端的设置之后只需要对hexo站点配置文件进行修改就可以实现部署到服务器端了。

1
2
3
4
deploy:
type: git
repo: root@CVM 云服务器的IP地址:/var/repo/hexo_static
branch: master

本文作者:Qiu Qingyu
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 CN许可协议。转载请注明出处!
本文永久链接:http://qiuqingyu.cn/2017/03/23/将hexo部署到腾讯云上/