搭建hexo+gitea的博客站

<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仓库并且也会同步到网页存储位置