背景:node-onebot在傻妞作者发保姆级教程的时候其实我就部署成功了,但是因为群晖没有systemd,猫咪大佬给的那几条systemctl命令用不了,这个问题一直没有解决,对结果很不满所以一直没有更新教程。上个周末花了点时间学习,看起来我好像成功了。目前挂载没有问题,终于可以给你们交出满意的答卷了。
简单介绍一下Supervisor,我只能根据自己的理解说些白话,可能不专业不严谨,大佬们不要见笑,欢迎纠正我。
一个进程管理工具,群晖系统也不自带,需要自行安装使用。
有了这个工具就可以比较方便的管理想要守护的进程。
因为node-onebot需要后台挂载,然后nohup可能会挂掉,所以通过这个进程管理工具守护进程,效果会好一些。
我的系统环境:群晖6.2.3版本,半白。
下面开始,认真码字✍️。
群晖Supervisor安装使用
一、安装Python3
步骤:群晖套件中心👉搜索🔍👉安装Python3

二、安装pip包管理工具
安装这个的目的是为了方便你可以用pip3
命令,使用ssh工具链接群晖。
1、下载get-pip.py并运行
sudo -i #用root身份,其实不用root身份也可以的,就是后面的安装路径啥的要根据自己的改。
wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' #下载get-pip.py
python3 /tmp/get-pip.py #运行get-pip.py,一般会提示你的安装路径,记住它,等下要用

如果是root身份安装路径一般在/var/packages/py3k/target/usr/local/bin
如果是用户身份安装路径一般在/var/services/homes/你的用户名/.local/bin
2、配置环境变量
安装好pip后,还需要配置一下环境变量,不然还是无法使用pip3安装。
vim ~/.bash_profile
#按键盘字母i进入编辑模式,输入下面的内容
export PATH=$PATH:/var/packages/py3k/target/usr/local/bin #如果你是用户身份,路径应该是/volume1/homes/你的用户名/.local/bin
#然后按键盘esc退出编辑模式,输入命令:wq保存并退出。
#执行下面的命令生效
source ~/.bash_profile
#最后检查一下环境
echo $PATH #返回下图的结果就是正常了,最后的就是pip3的。

至此,你的群晖就可以用pip3命令了。
三、安装配置Supervisor
1、安装Supervisor
pip3 install supervisor #安装supervior
返回下面的结果就是正常的,警告内容也不用管,反正我测试下来也没有影响使用。

2、配置Supervisor
1)生成默认配置文件
echo_supervisord_conf > /etc/supervisord.conf #会在etc目录下生成一个默认配置文件
2)修改配置文件
然后,你就可以修改这个默认配置文件,来添加你想要守护的进程。
vim /etc/supervisord.conf #按键盘字母i进入编辑模式,编辑好后按键盘esc退出编辑模式,输入命令:wq保存并退出。
A.取消配置文件中include指令的注释,把配置切割到子文件中。(非必需)
- 光标移动到[include]模块
- 删除[include]前面的分号;(就是取消注释吧)
- 添加files = /etc/supervisord.d/*.conf,上面那个不用管它。
这里的作用我理解应该是可以添加子进程管理。好像我也没用上,但是先记录下来吧。

B.进程配置:node-onebot项目为🌰
详细的进程配置说明可以参考官方文档。
当然,我知道你们一点都不想看,所以我就用node-onebot项目为🌰,
直接给一段配置,让大家直接抄就行(白嫖怪们),复制到最后就行。
[program:node-onebot1] #进程1
command=/volume2/@appstore/Node.js_v12/usr/local/bin/node /volume1/docker/sillyGirl/node-onebot/main.js qq机器人号码1 #前提是你之前已经运行过一次进行初始化登录了
user=root
autostart=true
startsecs=3
startretries=100
autorestart=true
stderr_logfile=/volume1/docker/sillyGirl/node-onebot/error1.log #报错日志路径,随便改
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
stdout_logfile=/volume1/docker/sillyGirl/node-onebot/access1.log #运行日志路径,随便改
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
[program:node-onebot2] #进程2
command=/volume2/@appstore/Node.js_v12/usr/local/bin/node /volume1/docker/sillyGirl/node-onebot/main.js qq机器人号码2 #前提是你之前已经运行过一次进行初始化登录了
user=root
autostart=true
startsecs=3
startretries=100
autorestart=true
stderr_logfile=/volume1/docker/sillyGirl/node-onebot/error2.log #报错日志路径,随便改
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
stdout_logfile=/volume1/docker/sillyGirl/node-onebot/access2.log #运行日志路径,随便改
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10

编辑好后按键盘esc退出编辑模式,输入命令:wq保存并退出。
Tips:
- command后面的第一节,是你的node安装路径,务必改成自己的路径。
群晖套件中心👉找到安装的Node.jsv12,看看你的存储空间路径,如果是1,就把路径改成/volume1/@appstore/Node.js_v12/usr/local/bin/node


- command后面的第二节,是你的node-onebot安装路径,务必改成自己的。
- 运行这个的前提是你之前已经初始化登录过qq机器人账号了。
3)最后启动进程!
supervisord #启动进程,返回下面的结果就表示成功了!

请务必初始化登录node-onebot后,再使用守护进程!!!
起飞效果,稳稳地很贴心,妈妈再也不用担心飞机颠簸了!!!

supervisor的常用命令
supervisord #初始启动Supervisord,启动、管理配置中设置的进程;
supervisorctl stop(start, restart) xxx #停止(启动,重启)某一个进程(xxx);
supervisorctl reread #只载入最新的配置文件, 并不重启任何进程;
supervisorctl reload #载入最新的配置文件,停止原来的所有进程并按新的配置启动管理所有进程;
supervisorctl update #根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启;
后话:这个学习了好久,也码字了好久。真心希望你们可以看懂可以学会。傻妞应该同样适用,但是暂时懒得搞了。 预祝各位从此傻妞不掉线,qq不冻结!
谢谢,分享学习了
学到了,根据你的方案,我在宝塔面板的supervisor管理器,启动了,之前一直不知道怎么弄,哈哈,感谢楼主
谢谢分享,学习了
谢谢,分享学习了
前来顶贴!
辛苦了,学习一下
/var/packages/py3k/target/usr/local/lib/python3.8/site-packages/supervisor/options.py:474: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security. self.warnings.warn( 最后启动是这样,能帮我解决下吗
瞅瞅瞅瞅,mark一手
先看看,不明白的地方再问
感谢分享,插眼学习
啥也不说了多谢
辛苦大佬分享了,我先学习一下