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久12 小时前
Day14: 搭建企业标准的DDD 简洁版四层架构
架构·.netcore
企鹅的蚂蚁13 小时前
Ubuntu 22.04 终端进阶:Terminator 安装与快捷键完全手册
linux·运维·ubuntu
千里马学框架14 小时前
Ubuntu 24 搭建aosp源码环境详细笔记
android·linux·ubuntu·framework·安卓·aosp·源码环境
sanzk15 小时前
ASTRA PRO相机
ubuntu·ros·3d相机
四禾子15 小时前
ubuntu的使用心得体会
linux·运维·ubuntu
学Linux的语莫16 小时前
vscode连接linux服务器,linux环境编程开发。
linux·vscode·ubuntu·编辑器
两点王爷16 小时前
Ubuntu 机器安装解压软件和ip工具
linux·运维·ubuntu
在深圳搬砖16 小时前
使用Qemu安装Ubuntu教程
linux·运维·ubuntu
马晓峰super16 小时前
Hyper-V Ubuntu 24.04 虚拟机开启增强会话(Enhanced Session)完整指南
ubuntu
ZHECSDN16 小时前
Ubuntu内存优化实战:告别卡死,让Linux内存管理更智能
linux·ubuntu