客户端使用Hexo生成静态文件,通过Git推送到VPS的Git仓库。VPS配置Git Hooks,将静态文件同步到站点目录,实现hexo博客更新。
本机准备工作
- 安装Hexo环境
- 安装Git
- 生成ssh秘钥
VPS配置工作
VPS以CentOS 7为例,使用Xshell5连接到VPS,登录root账户。
安装Git
git --version # 查看系统是否安装git
yum install git # 安装git
yum remove git # 卸载git
新建用户
adduser git
chmod 740 /etc/sudoers
vi /etc/sudoers
在vi编辑器中找到如下行
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在下面新增一行
git ALL=(ALL) ALL
保存后退出(linux命令 :wq),执行
chmod 440 /etc/sudoers
新建git仓库
su git
cd ~
mkdir .ssh && cd .ssh
touch authorized_keys
vi authorized_keys # 粘贴进本地机器的ssh公钥(一般在C:\Users\用户名\.ssh\id_rsa.pub文件中)
cd ~
mkdir hexo.git && cd hexo.git
git init --bare # 初始化git仓库
ssh连接测试
在git bash
命令行中输入ssh git@VPS的IP地址
,如果能登录远程主机,则表示Git配置成功
赋予git用户对网站目录的权限
cd /var/www/html # apache服务器的网站根目录
mkdir blog # 新建blog文件夹用以放置hexo博客文件
chown git:git -R /var/www/html/blog # 将目录所有者改为git用户
配置Git Hooks
su git
cd /home/git/hexo.git/hooks
touch post-receive # 新建脚本文件
vi post-receive
在vi编辑中输入以下代码后保存退出
#!/bin/bash
GIT_REPO=/home/git/hexo.git # git仓库
TMP_GIT_CLONE=/tmp/hexo
PUBLIC_WWW=/var/www/html/blog # 网站目录
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
chmod +x post-receive # 赋予脚本的执行权限
本机配置工作
进入本地hexo博客文件夹,打开站点配置文件_config.yml
,修改deploy选项
deploy:
type: git
repo:
github: git@github.com:ChangingFond/ChangingFond.github.io.git #同步到GitHub
vps: git@vps的ip:hexo.git仓库地址,master #同步到自己的VPS
branch: master
message: Hexo Blog updated - {{ now('YYYY-MM-DD HH:mm:ss') }})
按住shift右击,选择在此处打开命令窗口,运行hexo g -d
,如果一切正常,静态文件已经被成功的push到了blog的仓库里。
至此,我们完成了通过git将hexo博客部署到VPS上的功能。