Ubuntu 通过Supervisor 或者 systemd 管理 .Net应用
在 Ubuntu 上安装 .NET 8.0,通过 supervisor
或 systemd
管理 .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. 日志管理
Supervisor
和 systemd
都会自动管理应用程序的日志。你可以使用以下方法查看日志输出:
Supervisor 日志:
- 错误日志:
/var/log/myapp.err.log
- 输出日志:
/var/log/myapp.out.log
你可以通过 cat
或 tail
命令查看日志内容:
tail -f /var/log/myapp.out.log
systemd 日志:
systemd
使用 journalctl
来管理服务日志,你可以使用以下命令查看:
journalctl -u myapp.service -f
这个命令会显示应用的实时日志输出。
5. 查看进程
ps -ef | grep dotnet
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!