Hexo 部署至 Nginx 服务器


Catalogue
  1. 1. 远端工作(Nginx 服务器)
    1. 1.1. 环境准备
    2. 1.2. 设置自动部署(hook)
    3. 1.3. 配置 Nginx
  2. 2. 本地工作(Hexo 发布端)
    1. 2.1. 配置部署信息
    2. 2.2. 设置自动登录
  3. 3. 部署测试
  4. 4. 参考资料

远端工作(Nginx 服务器)

环境准备

安装 git 工具:

1
2
3
yum install git				# RH系
apt install git # Debian系
git --version # 验证安装情况

准备博客部署用户:

1
2
adduser hexo				# 创建用户
cd /home/hexo # 进入用户目录(自动创建)

在博客部署用户目录下创建仓库及博客目录:

1
2
git init --bare hexo.git	# 创建博客仓库
mkdir blog # 创建博客根目录

如果使用 root 用户进行的上诉操作,则需设置如下权限:

1
chown -R hexo:hexo /home/hexo

设置自动部署(hook)

进入 ~/hexo.git/hooks 目录,根据示例创建 post-update 文件:

1
2
cd /home/hexo/hexo.git/hooks
cp post-update.sample post-update

编辑创建好的 post-update 文件,按如下示例添加一行至原最后一行之前:

1
2
git --work-tree=/home/hexo/blog --git-dir=/home/hexo/hexo.git checkout -f	# 添加此行
exec git update-server-info # 原最后一行

配置 Nginx

根据情况编辑 Nginx 配置文件,一般为 /etc/nginx/nginx.conf

1
2
3
4
root /home/hexo/blog;
location / {
index index.html;
}

重启 Nginx 服务:

1
2
service nginx restart	# 或:
systemctl restart nginx

本地工作(Hexo 发布端)

配置部署信息

修改 Hexo 根目录下的 _config.yml 文件,根据情况选择以下两种方法之一 (repo_git 或 repo_ssh):

1
2
3
4
5
deploy:
type: git
repo_git: hexo@<IP>:/home/hexo/hexo.git
repo_ssh: ssh://hexo@<IP>:<PORT>/home/hexo/hexo.git,master
branch: master

设置自动登录

为避免每次部署时输入密码,需进行如下操作。创建公钥,根据需要替换邮箱:

1
ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

复制生成的公钥内容,一般位于 ~/.ssh/id_rsa.pub,添加至远端的 ~/.ssh/authorized_keys 文件内:

1
vi /home/hexo/.ssh/authorized_keys	# 没有则创建

部署测试

在 Hexo 目录编译并部署至远端仓库:

1
hexo clean && hexo g -d

注意:提示完成后检查 /home/hexo/blog 目录下是否存在博客文件,若没有,着重检查 hook 设置,或尝试提交一次更改。


参考资料