CentOS部署Hexo博客

安装各种工具

Nginx

  • 参考

lrzsz

1
apt install lrzsz

Git

1
sudo apt install git

新增git用户

1
root@iZj6cgoyl5x6opizfwaukrZ:~# adduser git  

修改Git权限

1
2
3
visudo
# User privilege specification
root ALL=(ALL:ALL) ALL

在root ALL=(ALL:ALL) ALL这一行下面添加git ALL=(ALL:ALL) ALL

关闭git用户shell权限

执行:vim /etc/passwd
将最后一行的git:x:1001:1001:,,,:/home/git:/bin/bash修改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

部署

初始化仓库

1
2
3
4
cd /home/git            //切换到git用户目录  
mkdir blog.git //创建git仓库文件夹,以blog.git为例
cd blog.git //进入仓库目录
git init --bare //使用--

创建目录

1
2
cd /var/www/            //切换目录  
mkdir blog //创建网站目录,以blog为例

配置SSH

1
2
3
4
cd /home/git            //切换到git用户目录  
mkdir .ssh //创建.ssh目录
cd .ssh
vim authorized_keys

然后将本地的公钥复制到authorized_keys文件里(公钥即上文中本地执行cat ~/.ssh/id_rsa.pub查看的内容)

修改权限(重要)

修改 .ssh 目录的权限为 700

  修改 .ssh/authorized_keys 文件的权限为 600

1
2
3
4
5
sudo chmod 700 .ssh
cd .ssh
sudo chmod 600 authorized_keys
cd ..
sudo chown git:git -R .ssh

文件夹权限

1
2
3
4
5
6
7
8
9
10
11
ll /home/git/  
ll /var/www/
确保blog.git、.ssh、blog目录的用户组权限为git:git
若不是,执行下列命令后再查看:
sudo chown git:git -R /var/www/blog
sudo chown git:git -R /home/git/blog.git
直接启用git-shell似乎有问题
cp /usr/share/doc/git/contrib/git-shell-commands /home/git -R
$ chown git:developers /home/git/git-shell-commands/ -R
$ sudo chmod +x /home/git/git-shell-commands/help
$ sudo chmod +x /home/git/git-shell-commands/list

增加Hooks
配置Git Hooks
创建post-receive文件
git用户下执行:
cd /home/git/blog.git/hooks //切换到hooks目录下
vim post-receive //创建文件
复制下面的内容到post-receive文件中:

1
2
3
4
5
6
7
8
#!/bin/bash -l  
GIT_REPO=/home/git/blog.git
TMP_GIT_CLONE=/tmp/blog
PUBLIC_WWW=/var/www/blog
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

保存退出后,执行:sudo chmod +x post-receive赋予可执行权限。

测试Git连接
3.Git服务器打开RSA认证
/etc/ssh/sshd_config中将RSA认证打开:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

1
2
在本地打开Git Bash:  
ssh git@VPS的ip