安装git与nginx

1
2
3
4
git --version

# 如果没有安装上
sudo apt-get install git

安装nginx

1
2
sudo apt-get install nginx
nginx -v

安装vim

1
sudo apt-get install vim

创建私有 Git 仓库

1
2
3
4
5
6
7
在 /var/repo/ 下
创建一个名为 hexo_static 的裸仓库(bare repo)
如果没有 /var/repo 目录,需要先创建

然后修改目录的所有权和用户权限
之后 ubuntu 用户都具备
/var/repo 目录下所有新生成的目录和文件的权限
1
2
3
sudo mkdir /var/repo/
sudo chown -R $USER:$USER /var/repo/
sudo chmod -R 755 /var/repo/

然后,执行如下命令

1
2
3
4
cd /var/repo/

# 建立裸仓
git init --bare hexo_static.git

配置 Nginx 托管文件目录

接下来,创建

1
/var/www/hexo

目录,用于 Nginx托管

1
sudo mkdir -p /var/www/hexo

修改目录的所有权和权限

1
2
sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo

修改 Nginx 的 default 设置

1
sudo vim /etc/nginx/sites-available/default
1
2
3
4
5
6
7
8
9
...

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /var/www/hexo; # 需要修改的部分
index index.html index.htm;
...

保存并且退出

1
sudo service nginx restart

添加秘钥(非必须)

如果你新建了一个用户

1
2
3
4
adduser git
passwd git
chmod 740 /etc/sudoers
vim /etc/sudoers

寻找内容

1
2
3
4
5
6
7
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## 添加
git ALL=(ALL) ALL

退出并且更改权限
chmod 400 /etc/sudoers

添加秘钥

1
2
3
4
5
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

## 将本地的 id_rsa.pub 文件全部复制进去

修改权限

1
2
3
cd ~
chmod 600 .ssh/authorized_keys
chmod 700 .ssh

本地测试

1
2
ssh -v git@SERVER
# 如果不出现failed字样,说明成功

创建 Git Hooks

接下来,在服务器上的裸仓库
hexo_static 创建一个钩子
在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下
/var/www/hexo

新建钩子文件

1
sudo vim /var/repo/hexo_static.git/hooks/post-receive

在文件中添加两行代码
指定 Git 的工作树(源代码)和 Git 目录(配置文件等)

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

保存并且退出文件,并且将其变为可执行文件

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

本地hexo配置

1
2
3
4
deploy:
type: git
repo: ubuntu@CVM 云服务器的IP地址:/var/repo/hexo_static
branch: master