前言
Hexo + Github Pages 本是绝顶搭配, 无奈最近国内访问速度越来越慢, 实在不忍直视.
虽说国内也有 Gitee.com 和 Coding.net 提供类似服务, 但都不完全免费, 甚至还有广告, 不在考虑范围之内.
最终只好忍痛买了个云主机, 开启博客搬迁之旅.
准备
- 公网可以访问的 VPS 一台;
- 可以正常使用的 Hexo 博客;
我这边的服务器环境是 Ubuntu 18.04 LTS 64 位, 下面的操作也都以此为准.
步骤
登录服务器
使用自己熟悉的工具登录服务器, Unix 环境下直接使用 ssh 命令 ssh user@host
即可, 其中 “user” 代表服务器用户名, “host” 代表服务器 ip.
安装 git 和 nginx
在服务器上运行以下命令即可:
1 | sudo apt-get update |
配置 nginx
创建 “/var/www/hexo” 目录用于存放博客静态文件:
1
mkdir /var/www/hexo
修改 nginx 配置文件:
1
vim /etc/nginx/conf.d/hexo.conf
写入以下内容:
1
2
3
4server {
listen 80;
root /var/www/hexo;
}重启 nginx:
1
sudo systemctl restart nginx.service
配置 Git Hooks
创建 Git 裸仓库:
1
2
3mkdir ~/hexo.git
cd ~/hexo.git
git init --bare其中: hexo.git 作为远程 git 仓库, 用于接收本地 Hexo 生成并 push 过来的静态文件.
配置 Hooks 脚本:
1
vim ./hooks/post-receive
填入以下内容:
1
2
3
4!/bin/bash
rm -rf /var/www/hexo
git clone /root/hexo.git /var/www/hexo给脚本赋予可执行权限:
1
chmod +x ./hooks/post-receive
post-receive 脚本会在 hexo.git 仓库接收到 push 动作时执行. 脚本执行的命令也很简单, 先删除
/var/www/hexo
目录, 再将 hexo.git 中最新的博客文件复制到/var/www/hexo
目录下.
部署 Hexo 博客
回到本地, 修改 Hexo 配置文件 “_config.yml”:
1 | deploy: |
其中: “user” 代表远程主机用户名, “host” 代表远程主机 ip, “hexo.git” 是我们刚才在服务器建立的仓库.
本地执行命令:
1 | hexo clean |
即可将博客发布至服务器.
发布完成后, 通过 “http://host“ 接口访问博客.
That’s All.