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

在 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

相关推荐
van久15 小时前
Day20:AutoMapper 对象映射
.netcore
菜鸟的日志16 小时前
【嵌入系统】嵌入式学习笔记(一)
windows·笔记·嵌入式硬件·学习·ubuntu·操作系统
相国17 小时前
在Windows里通过WSL安装Ubuntu 22.04
linux·windows·ubuntu·wsl
JiaWen技术圈19 小时前
增量静态再生(ISR)详解:Next.js 中的实现与应用
javascript·git·ubuntu
萑澈19 小时前
Linux内核安全态势报告:2021-2026年高危漏洞演进与深度技术分析
linux·ubuntu
van久20 小时前
Day23 登录 + 颁发 Token(DDD 四层架构 + 企业标准)
.netcore
烛衔溟2 天前
TypeScript 索引签名、只读数组与 keyof / typeof 入门
linux·ubuntu·typescript
良木生香2 天前
【Linux系统编程】Linux基础指令(1)---一文带你了解Linux的基础指令
linux·运维·服务器·ubuntu·机器学习·系统架构·centos
zhangrelay2 天前
三分钟云课实践速通--C/C++程序设计--
linux·c语言·c++·笔记·学习·ubuntu
lbb 小魔仙2 天前
Ubuntu 22.04 + Windows 本地部署 AI 大模型完全指南:Ollama + Python 调用实战(附国内加速配置)
人工智能·windows·python·ubuntu