Ubuntu 通过Supervisor 或者 systemd 管理 .Net应用

news/2024/9/25 9:35:47/文章来源:https://www.cnblogs.com/dx5800/p/18422761

在 Ubuntu 上安装 .NET 8.0,通过 supervisorsystemd 管理 .NET 应用服务,确保应用能够自动启动、运行以及在崩溃时重启。

1. 安装 .NET 8.0

最新的Ubuntu版本已经不需要注册 Microsoft 包存储库了,具体的可以参考微软官方文档安装,在Ubuntu上安装.NET SDK或.NET运行时

2. 使用 Supervisor 管理 .NET 应用

Supervisor 是一个进程管理工具,可以用来管理 .NET 应用的启动和重启等功能。

步骤 1: 安装 Supervisor

在 Ubuntu 上安装 Supervisor:

sudo apt install supervisor

步骤 2: 创建 Supervisor 配置文件

Supervisor 的配置文件存放在 /etc/supervisor/conf.d/ 目录下。创建并编辑一个配置文件(例如 myapp.conf),用于管理你的 .NET 应用:

sudo nano /etc/supervisor/conf.d/myapp.conf

在该文件中配置你的 .NET 应用。假设你的 .NET 应用程序文件为 /path/app/myapp.dll

[program:myapp]
command=dotnet myapp.dll  # 启动 .NET 应用
directory=/path/app
autostart=true              # 系统启动时自动启动该服务
autorestart=true            # 如果应用崩溃,自动重启
stderr_logfile=/var/log/myapp.err.log  # 错误日志
stdout_logfile=/var/log/myapp.out.log  # 输出日志
user=your_username          # 运行该应用的用户

步骤 3: 重新加载 Supervisor 配置并启动应用

一旦配置文件编写完成,使用以下命令使 Supervisor 重新加载并启动 .NET 应用程序:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myapp

步骤 4: 管理应用

你可以使用 supervisorctl 命令来管理你的应用程序的状态、重启等操作:

sudo supervisorctl status myapp  # 查看应用状态
sudo supervisorctl stop myapp    # 停止应用
sudo supervisorctl restart myapp # 重启应用
个人习惯通过 sudo supervisorctl 看到所有的服务列表,通过 stop myapp、start myapp、restart myapp、status等命令管理。 

3. 使用 systemd 管理 .NET 应用

systemd 是 Linux 系统的默认服务管理器。相比于 Supervisor,它更轻量且通常直接内置于系统中,适合用来管理应用程序的守护进程。

步骤 1: 创建 systemd 服务文件

/etc/systemd/system/ 目录下创建一个服务文件。例如,创建名为 myapp.service 的文件:

sudo nano /etc/systemd/system/myapp.service

在该文件中添加以下内容,用于管理你的 .NET 应用程序:

[Unit]
Description=My .NET Application
After=network.target[Service]
WorkingDirectory=/path/app
ExecStart=dotnet myapp.dll
Restart=always                # 让服务自动重启
RestartSec=10                 # 重启之前的等待时间
SyslogIdentifier=myapp        # 在日志中标识服务名
User=your_username            # 运行服务的用户[Install]
WantedBy=multi-user.target

步骤 2: 重新加载 systemd 并启动应用

执行以下命令来让 systemd 重新加载配置并启动你的应用:

sudo systemctl daemon-reload
sudo systemctl start myapp.service

步骤 3: 启用开机自启动

如果希望在系统启动时自动启动该应用程序,可以执行以下命令:

sudo systemctl enable myapp.service

步骤 4: 管理 .NET 应用服务

你可以使用 systemctl 来管理应用服务,比如查看状态、停止、重启等:

sudo systemctl status myapp.service  # 查看服务状态
sudo systemctl stop myapp.service    # 停止服务
sudo systemctl restart myapp.service # 重启服务
sudo systemctl disable myapp.service # 禁用开机自启

4. 日志管理

Supervisorsystemd 都会自动管理应用程序的日志。你可以使用以下方法查看日志输出:

Supervisor 日志:

  • 错误日志:/var/log/myapp.err.log
  • 输出日志:/var/log/myapp.out.log

你可以通过 cattail 命令查看日志内容:

tail -f /var/log/myapp.out.log

systemd 日志:

systemd 使用 journalctl 来管理服务日志,你可以使用以下命令查看:

journalctl -u myapp.service -f

这个命令会显示应用的实时日志输出。

5. 查看进程

ps -ef | grep dotnet

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

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

相关文章

【泛微E9】查询部门的部门层级以及所有上级部门

效果图如下:field1:一级部门 field2:二级部门 field3:三级部门 field4:四级部门 field5:五级部门 field6:六级部门 创建视图,view_bmcjpath 视图定义如下: WITH RECURSIVE department_tree (id, DEPARTMENTMARK, supdepid, depth, path) AS ( -- 初始化查询(非递归部…

Windows 10 on ARM, version 22H2 (updated Sep 2024) ARM64 AArch64 中文版、英文版下载

Windows 10 on ARM, version 22H2 (updated Sep 2024) ARM64 AArch64 中文版、英文版下载Windows 10 on ARM, version 22H2 (updated Sep 2024) ARM64 AArch64 中文版、英文版下载 基于 ARM 的 Windows 10 请访问原文链接:https://sysin.org/blog/windows-10-arm/,查看最新版…

macOS 15 Blank OVF - macOS Sequoia 虚拟化解决方案

macOS 15 Blank OVF - macOS Sequoia 虚拟化解决方案macOS 15 Blank OVF - macOS Sequoia 虚拟化解决方案 适用于 VMware ESXi 和 VMware Workstation 的 macOS Sequoia 虚拟化模板 请访问原文链接:https://sysin.org/blog/macos-15-ovf/,查看最新版。原创作品,转载请保留出…

ArgoWorkflow教程(五)---Workflow 的多种触发模式:手动、定时任务与事件触发

上一篇我们分析了argo-workflow 中的 archive,包括 流水线GC、流水线归档、日志归档等功能。本篇主要分析 Workflow 中的几种触发方式,包括手动触发、定时触发、Event 事件触发等。1. 概述 Argo Workflows 的流水线有多种触发方式:手动触发:手动提交一个 Workflow,就会触发…

从零开始学机器学习——了解回归

在本文中,我们探讨了回归分析在统计学和数据分析中的重要性和应用。线性回归和逻辑回归作为两种主要的回归分析方法,分别适用于不同类型的数据建模和预测需求。通过数学建模,它们能够揭示变量之间的关系,并且在实际应用中展现了强大的预测能力。首先给大家介绍一个很好用的…

大模型应用曙光 - 10X压缩技术

关注TechLead,复旦AI博士,分享AI领域全维度知识与研究。拥有10+年AI领域研究经验、复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,上亿营收AI产品研发负责人。如何在不牺牲性能的情况下将大型语言模型缩小十倍 虽然LLM的巨大规模赋予了…

绝缘手套穿戴智能识别系统

绝缘手套穿戴智能识别系统通过opencv深度学习技术赋能现场摄像头,绝缘手套穿戴智能识别系统对现场电力作业人员在带电设备上作业施工时有没有按厂区要求佩戴绝缘手套进行识别检测,当绝缘手套穿戴智能识别系统检测到现场电力作业人员违规行为即未佩戴绝缘手套时立刻抓拍告警,…

智慧工地安全帽智能识别系统

智慧工地安全帽智能识别系统通过opencv深度学习技术,智慧工地安全帽智能识别系统可自动检测识别作业现场人员有没有戴安全帽,当智慧工地安全帽智能识别系统检测出现场施工作业人员没有按照要求戴安全帽时,立即抓拍存档并同步回传违规数据到后台监控大数据平台,并提醒后台人…

煤矿人员工服着装智能识别监测系统

煤矿人员工服着装智能识别监测系统在摄像头监控画面中自动检测作业人员是否正确着装,煤矿人员工服着装智能识别监测系统若发现有现场作业人员没有按要求正确佩戴安全帽、穿着工服,煤矿人员工服着装智能识别监测系统会立即抓拍存档回传后台大数据监控管理平台,现场同时进行语…

Ai检测人员穿衣规范系统

Ai检测人员穿衣规范系统可以通过yolo深度学习技术对现场画面中人员穿衣自动检测,Ai检测人员穿衣规范系统发现现场作业人员未正确按要求穿衣服如穿戴安全带、手套、安全帽、胶鞋、反光衣,Ai检测人员穿衣规范系统会进行语音播报提醒,并将违规行为截图回传给后台大数据平台进行…

车辆逆行识别检测系统

车辆逆行识别检测系统通过yolo网络深度学习技术,车辆逆行识别检测系统对监控画面中车辆逆向行驶行为进行检测,若车辆逆行识别检测系统检测到道路上有车辆逆向行驶时,车辆逆行识别检测系统则抓拍预警。车辆逆行识别预警系统提升传统监控的事后被动查询,真正做到事前主动抓拍…

工厂安全着装识别检测系统

工厂安全着装识别检测系统通过python+opencv技术,工厂安全着装识别检测系统对前端摄像机监控画面中的工厂人员着装穿戴进行实时分析检测,如果工厂安全着装识别检测系统识别出现场人员未按工厂要求正确着装,工厂安全着装识别检测系统会自动抓拍存档告警,同步回传给后台大数据…