新建用户

1
2
3
4
5
6
7
# 添加一个git用户并生成目录
sudo useradd -m git
# 输入密码
sudo passwd git
su git
mkdir ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

上面创建的git用户可以通过ssh连接,进行任何操作。为了安全性,我们需要将git用户的活动限制在与Git相关的范围,也就是把git用户的shell改成 git-shell

1
sudo chsh git -s $(which git-shell)

创建blog 对应的git仓库

/var/repo下,创建一个空的blog.git仓库,请灵活替换。

1
2
3
mkdir /var/repo
cd /var/repo
git init --bare blog.git

配置git-hooks

也就是配置git推送后执行的脚本

1
vim /var/repo/blog.git/hooks/post-receive

添加

1
2
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

意思是从blog.git仓库覆盖掉/var/hexo目录,达到更新的目的。为其添加执行权限

1
chmod +x /var/repo/blog.git/hooks/post-receive

改变blog.git目录的拥有者

1
chown -R git:git blog.git

创建静态文件目录,并赋予权限

1
2
3
mkdir /var/www/hexo
chown -R git:git /var/www/hexo
chmod -R 755 /var/www/hexo

设置git自动推送

设置ssh密钥, your_email@example.com是自己的邮箱

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

一路回车以后,可以获取对应的公钥

1
cat ~/.ssh/id_rsa.pub

复制对应的文件到云端

1
sudo vim /home/git/.ssh/authorized_keys