前言
不得不说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
- 下载源码 | Download source
git clone https://github.com/YuJianghao/winwin-hexo-editor
- 文件夹改名并运行安装命令
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、用户名、密码。
- 利用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说明:
- a:表示archive mode,即备份目录下的所有内容(包括子目录中的内容),并且保持软链接、文件属性、文件修改事件、文件的所有者和宿主信息不变,并且同步字符/块设备以及命名socket和fifo等特殊文件。
- v:表示输出备份的详细信息
- z:表示传输时进行压缩
- –delete: 删除备份目的地里src中没有的文件
- ${source_dir}/ : 表示要备份的是${source_dir}目录下的所有内容,注意这里最后的 / 不能去掉,否则会把${source_dir}目录本身备份过去
- ${dest_dir}: 表示备份的目的地是 /data/ 目录
inotifywait说明:
- r: 表示递归监控子目录中文件发生的事件
- e: 指定要监控的事件列表。对于备份系统来说,只需要监控 modify、create和delete三种事件就行了。
▌使用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
参考: