linux学习笔记 Ubuntu下的守护进程supervisor安装与多项目部署

我这里首先是在本地WSL上进行安装,WSL2的是ubuntu 24.04,之后又再正式环境的ubuntu 20.04上安装,再次记录一下。

1、首先安装supervisor

apt install -y supervisor

2、创建配置文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

3、修改配置文件

vim /etc/supervisor/supervisord.conf

我需要web的管理页面,所以找到下面的位置,将前面的分号去掉

没有改端口,还是使用9001,本机的WSL2我用的局域网ip,正式服务器上的ip我是用的是0.0.0.0,(因为有一些网络问题配置成IP,会报错Cannot open an HTTP server: socket.error reported errno.EADDRNOTAVAIL)。

然后我们设置允许防火墙通过9001。

sudo ufw allow 9001

然后我们使用下面命令进行运行,如果已经运行就直接访问http://ip:9001/

supervisord -c /etc/supervisor/supervisord.conf

停止运行的命令

supervisorctl -u user -p 123 -c /etc/supervisor/supervisord.conf shutdown

4、添加应用配置

上面的命令是可以运行supervisor的,但是我们的应用还没有添加,所以我们需要添加应用。

修改/etc/supervisor/supervisord.conf文件,找到最下面的include,去掉分号,改成自己的配置文件地址

include

files = conf.d/*.ini

添加项目的配置文件,我这里有三个应用,就分别建了三个配置文件

因为我这里是.net6的应用,所以command是donet。

复制代码
[program:app_admin]
directory=/home/zyh/app_admin/    ;工作目录,jar包路径
command=dotnet AI.Admin.Api.dll --urls=http://192.168.164.97:5000  ; 程序启动命令
autostart=true       ; 在supervisord启动的时候也自动启动
startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3       ; 启动失败自动重试次数,默认是3
stopsignal=QUIT  ;终止进程命令
user=root         ; 用哪个用户启动进程,默认是root
priority=999         ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB
stdout_logfile_backups=20   ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/tmp/app_admin.log
stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程

配置完应用之后,可以再次启动supervisor进行一下测试。

5、配置开机启动

通常情况下我们都希望我们的应用可以开机启动,所以我们要配置supervisor开机自启动,所以我们创建一个service文件。

复制代码
vim /etc/systemd/system/supervisor.service

然后输入下面的内容,如果没有特别处理,路径通常都不需要修改

复制代码
[Unit]
Description=Supervisor daemon
 
[Service]
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecReload=/usr/bin/supervisorctl reload
ExecStop=/usr/bin/supervisorctl shutdown
User=your_user
Type=forking
 
[Install]
WantedBy=multi-user.target

然后我们启用Supervisor服务,使其开机自启:

sudo systemctl enable supervisor

配置完成,注意测试一下命令

sudo systemctl start supervisor

sudo systemctl reload supervisor

sudo systemctl stop supervisor

如果启动失败,注意看supervisord.conf文件内配置的相关路径的log中的失败日志。

相关推荐
薛定谔的悦3 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
2601_962218476 小时前
万象生鲜系统区块链溯源技术帮助生鲜企业搭建食品安全数字化体系
大数据·运维·微服务·云原生·架构
智塑未来6 小时前
中小公司在线文档选型:从协作入口到安全边界
运维·安全
新时代牛马6 小时前
Linux 内核入门地图:架构、源码目录与五大子系统
linux·运维·架构
智购科技无人售货机厂家6 小时前
2026自动售货机制冷系统维护指南:从散热器清洁到压缩机换油的工程实践~YH
运维·redis·物联网·缓存·架构
剑客的茶馆7 小时前
开发者,运维怎样转行FDE?
运维·ai·开发·fde
Julien20047 小时前
控制 SELinux 文件上下文
linux·运维·服务器
sulikey7 小时前
Linux Core Dump 完全指南:从原理到实战的崩溃调试手册。什么是core dump?程序报错core dumped怎么办?
linux·服务器·操作系统·调试·coredump
Lifangyun_WD7 小时前
第一次租 GPU 服务器怎么开始?镜像、SSH、数据存储和停机前要做什么
服务器·云计算·gpu算力·gpu算力租赁
众壹新能源科技7 小时前
功率预测误差考核怎么降?从气象源到上报口径的排查清单
运维·人工智能·自动化