<0x00> 为什么要用gitea + hexo
很简单,gitea 太好用了(才不是因为 git 配置太麻烦)
而且 hexo 的博客就是静态网页,基本不怎么耗费服务器资源
如此再搭个 gitea 正好还能当个代码仓库,岂不美哉
<0x01> 整体运行架构
就是 gitea 跑 git 仓库
然后利用 git hook 功能将仓库内容同步到服务器的另一个文件夹
hexo 的界面靠 nginx 反代
本地写完靠 hexo 的配置脚本通过 git 同步到服务器
(其实用 gitea 的话也可以通过插件实现 GitHub Page 的功能的)
<0x02> 先安装些组件
#安装nginx
sudo apt update && sudo apt upgrade
sudo apt install nginx
gitea 的安装在这就不赘述了
(我之前有从零搭建的教程)
<0x03> 配置git hook
git hook 其实就是一个自动化脚本
简单理解就是 git 到服务器上后服务器要干的事
首先,在 gitea 里创建一个仓库,名字随意
#进入对应仓库的hook配置目录
cd /var/lib/gitea/data/gitea-repositories/${gitea用户名}/${仓库名}.git/hooks/
(${gitea用户名}和${仓库名}都是按照自己的设置填的)
这里是 git 的各种 hook,别的现在用不大到
#进入需要编辑的hook目录
cd post-receive.d/
#创建我们自己的hook,名字随意
vim hexo
在 hexo 文件中,输入以下内容
#!/bin/bash
sss=/var/lib/gitea/data/gitea-repositories/${gitea用户名}/${仓库名}.git
ttt=/var/www/blog
rm -rf ${ttt}
git clone ${sss} ${ttt}
其中/var/www/blog是你希望存储网页的地址,可以改成别的
#给这个hook添加可执行权限
chmod a+x hexo
现在,理论上当你用 hexo 一键配置脚本的时候,那些网页文件会出现在那个位置
<0x04> 配置存储地址和nginx
#进入你希望存网页的位置
cd /var/www/
mkdir blog
#为第一次git用户删除提供权限
chmod -R 777 ./
#进入nginx的目录
cd /etc/nginx/
cd sites-enabled/
vim default
需要注意的是,这里的nginx版本可能比较新,所以需要修改/etc/nginx/sites-enabled/default
如果你在/etc/nginx/nginx.conf中能看到在http{}中有server{}
那么直接在/etc/nginx/nginx.conf就行
在server{}中,把root的值改为存储网页的位置
在这里是改为root /var/www/blog
再在index后加入index.html
(有了就不用加)
#重启nginx服务
nginx -s reload
现在,理论上访问服务器 ip 后就是博客首页了
<0x05> 本地的一些修改
打开_config.yml
deploy:
type: git
repo: git@{服务器ip}:{gitea用户名}/{gitea仓库名}.git
branch: master
现在,当你运行hexo deploy,网页内容将同步到git仓库并且也会同步到网页存储位置