Hexo提速:自动部署到阿里云ECS服务器

Hexo是一个便捷的静态博客系统,最方便快捷的方案就是部署到GitPage上。但是GitPage的服务器位于美国,如果没有加CDN的话,国内用户访问GitPage的速度普遍较慢,而且国内搜索引擎对基本不(能)抓取GitPage上的内容,影响网站的SEO。

环境

  1. 带Git环境的ECS(以Centos为例)
  2. 本地Hexo环境(Node.js等)
  3. 已备案域名等其他必要的东西

原理

示意图

示意图

创建仓库

在ECS上,检查git环境,创建git仓库

1
2
mkdir blog.git && cd blog.git
git init --bare

创建仓库

其中git init --bare指令的作用是创建一个裸仓库。裸仓库与普通git仓库不同,普通git仓库包含所有可操作性的项目文件和.git目录,而裸仓库只包含commit的版本信息。简便起见,这里直接创建裸仓库。

Hexo配置

1
2
3
4
5
6
deploy:
- type: git
#git仓库路径
repo: root@xx.xxx.xxx.xxx:/www/blog.git
#分支
branch: master

插件安装

1
npm install hexo-deployer-git --save

该插件的作用是执行deploy的时候,将hexo生成的静态文件提交到hexo的_config.yml配置的deploy.repo地址。如果已经成功部署到GitPage过,该插件一般都默认安装了,可以执行该命令检查、更新插件。

img

自动部署

创建钩子

进入git仓库/hooks目录,并创建钩子post-receive

1
2
3
cd /www/blog.git/hooks
touch post-receive
vim post-receive

然后输入以下内容

1
2
3
4
5
6
7
8
#!/bin/bash -l
GIT_REPO=/www/blog.git
TMP_GIT_CLONE=/www/tmp/blog
PUBLIC_WWW=/www/wwwroot/pwner.cn
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

其中/www/blog.git为仓库路径,/www/wwwroot/pwner.cn为博客网站路径,/www/tmp/blog是临时目录。

git会先将文件拉到临时目录,然后再将所有文件拷贝到博客网站目录/www/wwwroot/pwner.cn

保存后退出。

更改目录权限

更改网站目录权限

1
2
chmod +x post-receive
chmod 777 -R /www/wwwroot/pwner.cn

运行

每次写完博客,在本地博客目录下运行hexo g -d即可。可能需要输入远程访问服务器的密码。

出现以下提示说明部署成功。

1
2
...
INFO Deploy done: git

本文标题:Hexo提速:自动部署到阿里云ECS服务器

文章作者:Pwner

发布时间:2020年04月20日 - 17:04

最后更新:2020年09月30日 - 11:09

原始链接:https://pwner.cn/posts/542fc3b8.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Buy me a cup of coffee.