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中的失败日志。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/461098.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux特种文件系统--tmpfs文件系统前传:虚拟内存子系统

虚拟内存子系统是操作系统中的一个重要组成部分,它负责管理和优化计算机的内存使用。虚拟内存的概念允许操作系统为每一个进程创建一个虚拟地址空间,这个空间比实际物理内存要大得多。虚拟内存子系统通过将部分虚拟地址映射到物理内存,部分映…

【测试工具】通过Jmeter压测存储过程

目录 一、存储过程准备1.1、 建立空表1.2、 建立存储过程1.3、调试 二、测试工具准备三、工具配置及执行3.1、配置JDBC Connection Configuration:3.2、配置吞吐量控制器3.3、配置JDBC Request 一、存储过程准备 1.1、 建立空表 CREATE TABLE test_data ( id NUMB…

安宝特分享 | AR技术引领:跨国工业远程协作创新模式

在当今高度互联的工业环境中,跨国合作与沟通变得日益重要。然而,语言障碍常常成为高效协作的绊脚石。安宝特AR眼镜凭借其强大的多语言自动翻译和播报功能,正在改变这一局面,让远程协作变得更加顺畅。 01 多语言翻译优势 安宝特A…

vivado-vitis-2024.1 ps_hello_world 实验

实验环境 vivado:2024.1 vitis:2024.1 核心板:ZYNQ-7020 实验内容 实验PS端串口打印 "Hello world " 硬件配置 打开vivado2024,新建一个工程 点击 Create Block Design 开始IP配置 首先连接线 然后点击自动连接…

[GXYCTF 2019]Ping Ping Ping 题解(多种解题方式)

知识点: 命令执行 linux空格绕过 反引号绕过 变量绕过 base64编码绕过 打开页面提示 "听说php可以执行系统函数?我来康康" 然后输入框内提示输入 bjut.edu.cn 输入之后回显信息,是ping 这个网址的信息 输入127.0.0.1 因为提示是命令…

《神经网络助力战场车辆及部件损毁识别与评估》

《神经网络助力战场车辆及部件损毁识别与评估》 一、战场车辆损毁评估的重要意义二、传统战场车辆损毁评估方法(一)视觉评估法(二)仪器检测技术 三、神经网络在战场车辆损毁评估中的应用案例(一)射击毁伤评…

K8S配置storage-class

简介 Kubernetes支持NFS存储,需要安装nfs-subdir-external-provisioner,它是一个存储资源自动调配器,它可将现有的NFS服务器通过持久卷声明来支持Kubernetes持久卷的动态分配。该组件是对Kubernetes NFS-Client Provisioner的扩展&#xff0…

Redis 主从同步 总结

前言 相关系列 《Redis & 目录》《Redis & 主从同步 & 源码》《Redis & 主从同步 & 总结》《Redis & 主从同步 & 问题》 参考文献 《Redis的主从复制和哨兵机制详解》 概述 简介 主从同步的本质是数据复制机制。主从同步机制用于将master…

Android 圆形进度条CircleProgressView 基础版

一个最基础的自定义View 圆形进度条,可设置背景色、进度条颜色(渐变色)下载进度控制;可二次定制度高; 核心代码: Overrideprotected void onDraw(NonNull Canvas canvas) {super.onDraw(canvas);int mW g…

得物App 3D球鞋博物馆亮相两博会,打造沉浸式消费新体验

近日,2024中国体育文化博览会、中国体育旅游博览会(简称“两博会”)在苏州国际展览中心拉开帷幕。得物App携手Apple Vision Pro共同打造的3D球鞋博物馆亮相两博会上海展区,并通过3D技术为观众呈现独特的沉浸式消费新体验。 在3D球…

node.js下载、安装、设置国内镜像源(永久)(Windows11)

目录 node-v20.18.0-x64工具下载安装设置国内镜像源(永久) node-v20.18.0-x64 工具 系统:Windows 11 下载 官网https://nodejs.org/zh-cn/download/package-manager 版本我是跟着老师选的node-v20.18.0-x64如图选择 Windows、x64、v20.18…

【Leetcode】单调栈

单调栈 单调栈是一种高效的栈结构,常用来解决数组中元素顺序相关的问题,如“下一个更大元素”等。其核心思想是通过维护栈内元素的单调性,并记录元素的间顺序关系,以减少不必要的比较操作。通常情况下,由于每个元素入…

【技术点】用SQL语言操作关系型数据库Mysql中的数据(有练习资料)

用SQL语言操作关系型数据库Mysql中的数据 一、增删改查增数据删数据改数据查数据 二、触发器三、视图 练习题目链接 前言: 之前操作的时候大多时候都是用GPT生成的sql语句(有一说一真的实用),但是缺少自己完整独立完成sql语句书写…

ELK之路第四步——整合!打通任督二脉

ELK之路第四步——整合!打通任督二脉 前言1.架构2.下载资源3.整合开始1.分别启动三个es2.启动kibana3.新建filebeat_logstash.yml配置文件4.修改logstash的启动配置文件5.启动logstash6.启动filebeat7.Kibana查看 4.结语 前言 在开始本篇之前,你需要用到…

从CAB到PAB Oracle的AI 23.6(之一)

Oracle的CAB和PAB 这是甲骨文的客户大会Oracle China Customer Advisory Board Metting CAB缩写。和Oracle China Partner Advisory Board Metting PAB缩写。 这已经不是我第一次参加了。虽然现在有信创,但是技术人讨论技术还是要纯粹一点。所为纯粹就像精武英雄中…

electron知识整理和问题汇总

知识整理 1.electron进程间通讯 快速通道 electron进程间通讯 2.关于electron-vue里的app.asar 快速通道 关于electron-vue里的app.asar 3.获取版本号等信息 remote.app.getVersion(); //加载应用程序的版本号。 如果应用程序的 package. json 文件中找不到版本号, 则返回…

ROS(快速初步入门)

目录 一、节点与节点管理器 二、通信方式 三、参数 四、文件系统 五、ROS命令行工具 六、创建工作空间与功能包 1)工作空间 2)创建功能包 七、发布者Publisher的代码实现 八、订阅者Subscriber的编程实现 九、自定义话题并使用 十、Client客户…

leetcode-62-不同路径

题解: 1、设dp[i][j]代表到达(i,j)点最多的路径;题目要求机器人每次只能向右或向下走一步,所以到达(i,j)点的最多路径为到达(i-1,j)的最多路径与到达(i,j-1)的最多路径之和。即dp[i][j]dp[i-1][j]dp[i][j-1]。 2、初始化一个M*N的矩阵dp,将…

【问题解决】pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

今天配置完poetry环境变量之后pnpm不能用了 具体报错 pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1pnpm run dev~~~~ Ca…

【设计模式】如何用C++实现依赖倒置

【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置? 依赖倒置原则(Dependency Inversion Principle,DIP)是SOLID面向对象设计原则中的一项。它的核心思想是: 高层模块不应该依赖于低层模块,两者都应该…