说明

本教程使用系统为 Centos 7.x

服务器安装 Git

如果 服务器端 没有安装 Git 程序,可以通过下面的命令来安装。

# 查看当前 Git 版本
git --version

# 安装 Git
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install -y git

创建 Git 目录和博客目录

服务器端 执行下面的命令来创建 Git 目录和博客目录。

# 切换目录
cd /www/wwwroot/

# 创建 Git 仓库
git init --bare vsneko.git

# 创建博客目录
mkdir www.vsneko.com

修改 Git 推送设置

通过创建 Hook 钩子函数,来将 Git 推送过来的文件保存到博客目录(而不是 Git 工作目录)。

# 切换目录
cd vsneko.git/hooks/

# 创建 post-receive 文件
vi post-receive

进入编辑模式之后,输入如下内容:

#!/bin/sh
git --work-tree=/www/wwwroot/www.vsneko.com --git-dir=/www/wwwroot/vsneko.git checkout -f

修改保存完毕之后,必须要添加 可执行 的权限,否则无法生效。

chmod +x post-receive

SSH 公钥

必须将本地公钥配置到服务器端,否则没有权限。

本地 执行下面的命令来配置公钥(使用 Git Bash)。

# 设置 Git 信息
git config --global user.name "shironekoa3"
git config --global user.email "shironekoa3@qq.com"

# 本地生成密钥
ssh-keygen -t rsa -C "shironekoa3@qq.com"

# 查看公钥
cat ~/.ssh/id_rsa.pub

# 将公钥复制到服务器(注意跟着提示走)
ssh-copy-id root@ip

本地测试

在本地测试看刚刚搭建的 Git 仓库能不能拉取下来。

git clone root@ip:/www/wwwroot/vsneko.git

如果能够正常拉取,则配置成功。

也可以进行推送,而且推送的文件会自动转移到博客目录。

Hexo 配置部署信息

在 Hexo 博客的配置文件里配置部署的服务器信息:

deploy: 
type: git
repository: root@ip:/www/wwwroot/vsneko.git
branch: master

服务器端可以使用 Nginx 等任何 Web 服务器来搭建网站。

一些问题

LF will be replaced by CRLF in XXX.

这是由于 Linux 中的换行符是 LF,而 Windows 中的换行符是 CRLF,如果想用 Windows 下的 Git 管理来自 Linux 的文本文件,Git 会默认将 LF 转换成 CRLF,并发出烦人的 Warning。

通过如下命令来关闭自动转换:

# 当前 Git 仓库
git config core.autocrlf false

# 全局
git config --global core.autocrlf false