利用winwin hexo editor、inotifywait和rsync在宝塔上搭建后台在线编辑hexo文章

前言

不得不说Hexo的有点很多,但后台的缺失既是优点也是缺点。以前也不是很在意这个,但近段时间较忙,比较少机会在家用电脑,突然想到能不能帮hexo弄一个后台来编写文章呢? 这样的话就能随时随地像typecho、wordpress那样编写文章但又能享受hexo的有点。 搜了大半天,结果在V2ex发现了有大佬居然真的写了这么一个hexo后台:

地址: https://yujianghao.github.io/winwin-hexo-editor/
github: https://github.com/YuJianghao/winwin-hexo-editor

功能

安装

安装Hexo和Node.js

首先需要在VPS上安装Hexo和Node.js, 这位大佬怕小白不懂,自己手把手教学:从头教你搭建Hexo博客

安装单个winwin hexo editor

  1. 下载源码 | Download source
git clone https://github.com/YuJianghao/winwin-hexo-editor
  1. 文件夹改名并运行安装命令
cp -r winwin-hexo-editor bingwong-editor
cd bingwong-editor
bash install.sh

安装过程中要求填写hexo blog的路径、token、用户名、密码等

What’s your hexo blog path? The same path as your hexo _config.yml file

因为我的hexo blog的路径为/root/bingwong/那么这里填写/root/bingwong/就可以了,剩余的就是设置token、用户名、密码。

  1. 利用pm2 后台运行
# 使用pm2 | with pm2
# 开启 | start
npm run prd

这里是其他pm命令:

pm2 list
pm2 stop    
pm2 restart 
pm2 delete  

然后用浏览器打开http://localhost:5777 就可以了。当然,你可以配置nginx指定一个网址进行http服务器反向代理。

不说了,直接上才艺

安装多个winwin hexo editor

假设你的VPS部署了多个hexo,那么我们只需要相应地安装多个winwin hexo editor就可以了。
同样地,先下载源码,然后将文件夹命名为不同的名字,如:

bingwong-editor
thepapers-editor

然后各个editor都需要按照上面第二步根据提示安装就可以了。

但我们先不要急着利用pm2 后台运行,因为我们需要改一改每个editor的运行名称。

我们先打开bingwong-editor文件夹里面的package.json,你就会发现:

"prd": "export NODE_ENV=production && pm2 start bin/www --name hexoeditor"

这里要改为

"prd": "export NODE_ENV=production && pm2 start bin/www --name hexoeditor-bingwong"

我们用同样的方法将thepapers-editor文件夹里面的package.json改名。

为什么要这样做呢,就是为了运行pm2之后用于区分不同的editor:

如果hexo是通过正常的git或者是rsync来deploy的话,下面这个笨方法就不用试了。 下面的这个方法是直接同步hexo 生成的public文件夹到宝塔网站上


使用inotifywait和rsync进行实时同步文章到宝塔的“网站”

上面的winwin hexo editor只是让hexo多了个后台,但hexo生成网站到public文件夹后并不会自动实时同步到宝塔的"网站"中,这里有一个笨方法就是利用inotifywait监控public文件夹的变动情况,然后利用rsync实时同步到宝塔的"网站"中。

安装inotifywait和rsync

鉴于安装教程比较简单,大家百度自行补脑。

inotifywait是 inotify-tools 包中提供的一个工具,它使用 inotify API 来监控文件/目录中的变动情况。
rsync是一个快速、功能丰富的copy工具。它可以进行本地拷贝、从远端主机拷贝、拷贝到远端主机。

编写inotifywait运行脚本

我创建新文件夹hexo-sync-script,然后在文件夹下新建了文件bingwong.sh并写入以下代码:

#!/bin/bash

source_dir=/home/yourself/bingwong/public/
dest_dir=/home/yourself/bingwong.org/
while :
do
    inotifywait -r -e modify,create,delete ${source_dir}
    sleep 10
    rsync -avz ${source_dir}/ ${dest_dir} --delete
done

rsync说明

inotifywait说明:

使用systemctl让脚本开机启动

可以使用systemctl将备份服务做成开机启动。

首先创建/etc/systemd/system/bingwong.service, 或者利用宝塔直接新建文件 bingwong.service

sudo vim /etc/systemd/system/bingwong.service 

内容如下:

[Unit]
Description=BingWongSyncService

[Service]
ExecStart=/home/hexo-sync-script/bingwong.sh start
ExecStop=/home/hexo-sync-script/bingwong.sh stop

[Install]
WantedBy=multi-user.target

使用systemctl让bingwong.service开机启动:

sudo systemctl enable bingwong.service

最后启动服务:

sudo systemctl start bingwong.service

参考:

  1. 使用inotifywait和rsync进行实时备份
  2. 使用inotify-tools与rsync构建实时备份系统
阅读量: | 柯西君_BingWong | 2020-07-31