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

ops/2024/11/1 6:16:18/

        我这里首先是在本地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中的失败日志。


http://www.ppmy.cn/ops/130058.html

相关文章

【http协议笔记】-- 浏览器简单分析get、post请求

环境:为了了解http协议的交互方式,使用edge浏览器简单分析协议内容,给刚入门的小伙伴分享一下,方便大家学习。 以菜鸟教程的网站为例子: 分析post: 请求url: 请求参数: 请求相应&a…

Oracle视频基础1.3.3练习

1.3.3 检查数据库启动情况 ps -ef | grep oracle启动数据库 sqlplus /nolog conn / as sysdba修改 fast_start_mttr_target 参数为初始值-50,缺省 scope 和 sid,查看修改结果 show parameter fast; alter system set parameter 250; show parameter fa…

讲一讲 kafka 的 ack 的三种机制?

大家好,我是锋哥。今天分享关于【K讲一讲 kafka 的 ack 的三种机制?】面试题?希望对大家有帮助; 讲一讲 kafka 的 ack 的三种机制? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka的消息确认机制&…

【jvm】新生代和老年代

目录 1. 说明2. 新生代(Young Generation)2.1 定义与用途2.2 内存分配与回收2.3 特点 3. 老年代(Old Generation)3.1 定义与用途3.2 内存分配与回收3.3 特点 1. 说明 1.在Java虚拟机(JVM)中,新…

详解SQL单表查询

SQL单表查询 1. SELECT 语句的基本结构2. 查询所有列和指定列查询所有列查询特定列 3. WHERE 条件筛选比较运算符多条件查询:使用 AND 和 ORNOT 操作符 4. ORDER BY 进行排序多列排序 5. LIMIT 限制返回行数只获取前N行数据使用 LIMIT 和 OFFSET 进行分页查询 6. 常…

鸿蒙UI开发——基于全屏方案实现沉浸式界面

1、概 述 典型应用全屏窗口UI元素包括状态栏、应用界面和底部导航条。 其中状态栏和导航条,通常在沉浸式布局下称为避让区,避让区之外的区域称为安全区。 开发应用沉浸式效果主要指:通过调整状态栏、应用界面和导航条的显示效果来减少状态…

【三十八】【QT开发应用】vlcplayer视频播放器(一)实现视频播放,视频暂停,视频停止,进度条调节,音量调节,时长显示功能

效果展示 vlcplayer_test视频播放器 MainWidget.ui 注意控件的布局和命名,控件的命名和信号与槽函数的绑定有关,所以这点很重要。 下载VLC组件和环境配置 videolan下载地址我下载的是vlc-3.0.8-win64版本. 将下载的文件复制粘贴到项目文件中. 复制粘…

尚硅谷-react教程-求和案例-数据共享(下篇)-完成数据共享-笔记

#1024程序员节&#xff5c;征文# public/index.html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>redux</title></head><body><div id"root"></div></body> </html&…