Hexo管理面板
个人不喜欢Qexo的Github Action方式,其本地方式又有问题,故在此给大家提供一种思路。
安装Qexo
自行阅读文档。快速开始 | Qexo 文档。以下提供本人自用的Docker run
docker run -d \
--restart=unless-stopped \
-v $(pwd)/db:/app/db \
-v blog目录:/blog \
-p 127.0.0.1:40001:8000 \
-e TIMEOUT=600 \
--name="qexo" \
abudulin/qexo:latest
其中blog目录设置为你的blog所在目录,端口映射如果你不在意直接暴露端口则可以不用设置监听127.0.0.1,当然我使用反代将80端口反代到40001端口,方便我套CDN,也避免泄露服务器的IP。
在Qexo设置方面,参考如下

监听文件变动
安装inotify-tools
sudo apt install inotify-tools
找一个目录放监控脚本,我放在/etc/komri/blog/blog_monitor.sh,设置脚本有可执行权限chmod -x /etc/komri/blog/blog_monitor.sh,脚本美容如下
#!/bin/bash
# 监控的目标路径
TARGET="/etc/komari/blog/source"
# 检查目标是否存在
if [ ! -d "$TARGET" ]; then
echo "错误: 目录 $TARGET 不存在。"
exit 1
fi
echo "开始监控 $TARGET ..."
# 使用 inotifywait 监控
# --format '%w%f' 输出完整路径
inotifywait -m -r -e modify,create,delete,move --format '%w%f' "$TARGET" | while read FILE
do
# --- 防抖动逻辑 ---
# 发现变动后,等待 10 秒,如果期间还有变动,read -t 会继续读取
while read -t 10 NEXT_FILE; do
: # 丢弃短时间内的连续事件
done
echo "检测到变动:$FILE,正在执行任务..."
# 【在此处替换为你实际要执行的命令】
# 例如:/usr/bin/rsync -avz /etc/komari/blog/ /backup/blog/
cd /etc/komari/blog && /usr/local/bin/hexo g && /usr/local/bin/hexo d
echo "任务执行完毕,继续监控..."
done
设置开机自启
创建一个systemd服务,并编辑vim /etc/systemd/system/blog-monitor.service
[Unit]
Description=Inotify Folder Monitor for Komari Blog
After=network.target
[Service]
# 因为要监控 /etc 目录,通常需要 root 权限
User=root
Group=root
# 执行脚本的路径
ExecStart=/usr/local/bin/blog_monitor.sh
# 崩溃自动重启设置
# Restart=always 表示无论退出状态码是多少都会重启
Restart=always
# 重启前的等待时间
RestartSec=5s
# 限制日志输出大小(可选)
StandardOutput=journal
StandardError=journal
[Install]
# 设置开机自启
WantedBy=multi-user.target
重启systemd并设置开启自启
sudo systemctl daemon-reload
sudo systemctl enable blog-monitor.service
sudo systemctl start blog-monitor.service
这样就能监控是否创建了新的文章,如果修改了主题文件,则自己去blog文件夹下重新执行一遍hexo clean && hexo g && hexo d
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Linの博客!
