使用 git 进行 hexo 博客部署
使用git进行hexo博客部署
hexo
静态博客的部署方式有很多种,但在实验的结果上来说,git
部署依旧是最方便且最快捷的。
网上有一些部署方式是通过将hexo
仓库整体上传,并且在服务器段进行生成和部署,这样的方式可能会造成加密博文的泄露等安全性问题。可以将本地生成后的博客静态目录进行上传,以避免这种问题。这也是hexo-deployer-git
所作的事情。
本篇博客不会涉及:
- hexo博客的配置、本地安装、本地渲染及测试
- nginx等服务器对静态目录的站点映射
- 域名配置等问题
服务器配置
首先需要确保服务器已成功安装git,可以通过
git --version
查看是否安装成功。
如没有安装,可以通过yum install git
或apt install git
等命令进行安装,具体可参考搜索引擎提供的结果。添加并配置
git
用户sudo adduser git # 添加git用户
配置git仓库
为方便后续操作,你需要设置如下变量:export blogdir=/path/to/your/repo
shell变量名、等号和值之间均不要留有空格
之后你可以进行操作了:
mkdir -p $blogdir/public cd $blogdir sudo git init --bare git sudo echo '#!/bin/bash' > $blogdir/git/hooks/post-receive sudo echo "git --work-tree=$blogdir/public --git-dir=$blogdir/git checkout -f" >> $blogdir/git/hooks/post-receive chmod +x $blogdir/git/hooks/post-receive
配置站点路径
请将站点路径配置为$blogdir/public
,其中$blogdir
为你上一步设置的变量。将你的ssh公钥放入git用户目录下
如果你没有ssh公钥,请搜索“生成ssh密钥”以找到解决方法。这里不再赘述。sudo su git mkdir /home/git/.ssh # 使用 echo "ssh-ed25519 xxxxxxxx" >> /home/git/.ssh/authorized_keys # 直接输入 # 或 echo $(curl https://github.com/GZTimeWalker.keys) >> /home/git/.ssh/authorized_keys # 使用github上的公钥 # 或 # 在本地使用 ssh-copy-id git@yourhost 上传密钥 chmod 600 /home/git/.ssh/authorized_keys chmod 700 /home/git/.ssh
至此可以测试一下
ssh git@yourhost
是否可以成功访问了。如遇到各种权限问题或公钥放进去但无法登录,个人经验为使用
ssh-copy-id
利用密码登录上传一次密钥最为可靠。更新git用户权限
sudo chown -R git:git $blogdir sudo sed -i 's/::\/home\/git:\/bin\/bash/::\/home\/git:\/bin\/git-shell/g' /etc/passwd # 更改git用户的ssh登陆权限
Q:为什么要更改git用户的ssh登录相关权限?
A:保证git用户仅可以用来进行git操作而不能使用终端,保障安全性。要使此操作生效,你可能需要重启服务器
本地配置
安装
hexo-deployer-git
npm install hexo-deployer-git --save
配置文件
_config.yml
deploy: type: git repo: git@yourhost:$blogdir/git branch: master
其中
$blogdir
为你上文设置的变量。使用
hexo clean ; hexo d -g
进行测试