Pwner's Blog

能全力以赴不尽力而为

0%

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
如果文章对你有用,可以请我喝杯咖啡~
  • 本文作者: Pwner
  • 本文链接: https://pwner.cn/posts/542fc3b8.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!