教程其实很简单,但是因为每次都要重新查所以记录下来

本地设置

在HEXO文件夹根目录_config.yml文件末尾填写

1
2
3
4
deploy:
type: 'git'
repo: ssh://git@ip:port/var/repo/blog.git
branch: main

服务器设置

前置条件安装Git,并设置默认创建分支为main,配置教程参见Git使用指南

1
2
# 设置默认初始化分支为main
git config --global init.defaultBranch main

关闭SSH密码登录功能

1
sudo vim /etc/ssh/sshd_config

找到PasswordAuthentication修改为PasswordAuthentication no

新建git用户

1
2
3
4
useradd -m git
#切换到git用户
su git
vim ~/.ssh/authorized_keys # 粘贴本地电脑的公钥

测试公钥是否添加成功

1
ssh git@your_ip

新建Git仓库

1
2
3
4
sudo mkdir /var/repo    #新建 git 仓库位置
cd /var/repo
sudo git init --bare blog.git #创建名为 blog 的仓库
sudo vim /var/repo/blog.git/hooks/post-update #配置 hooks 实现自动部署

添加以下内容
git --work-tree=/www/your_website_dir --git-dir=/var/repo/blog.git checkout -f

当我们 hexo d 会自动执行该 hooks 将内容部署到对应位置 /www/your_website_dir 目录下

配置文件权限

此脚本可以在root用户执行

1
2
3
4
5
6
cd blog.git/hooks/
# 更改文件夹拥有者
sudo chown -R git:git /var/repo/
sudo chown -R git:git /www/your_website_dir
# 赋予其可执行权限
sudo chmod +x /var/repo/blog.git/hooks/post-update