.NET Core 应用程序如何在 Linux 中创建 Systemd 服务 ?

.NET Core 和 Linux 已经成为一个强大的组合,为开发人员提供了一个灵活、高性能的平台来构建和运行应用程序。在 Linux 上部署 .NET Core 应用程序的一个关键方面是利用 systemd 服务来确保应用程序顺利运行,在开机时自动启动,并在失败后重新启动。

Systemd 和 .NET Core 简介

Systemd

Systemd 是初始化系统和系统管理器,已成为许多 Linux 发行版的标准。它负责初始化系统组件并在启动后管理系统进程。它引入了系统服务的概念,允许以统一的方式管理系统和应用程序服务。

.NET Core

是一个开源的跨平台框架,由微软开发,用于构建现代应用程序。.NET Core 凭借其高性能、并行版本控制和灵活性,在开发 Windows、Linux 和 macOS 上运行的 web 应用程序、服务和服务器应用程序方面获得了广泛的应用。

Setting Up a .NET Core Application on Linux

在深入研究系统服务之前,请确保您的 .NET Core 应用程序已经准备就绪,并在本地开发环境中进行了测试。一旦确信它按预期运行,下一步就是发布应用程序。

使用 .NET Core CLI 为 Linux 环境发布应用程序

复制代码
dotnet publish -c Release -o /path/to/publish/directory --runtime linux-x64

将发布的应用程序传输到 Linux 服务器,您可以使用 SCP、FTP 或任何其他适合您的工作流程的方法。

Creating a Systemd Service for Your .NET Core Application

在 /etc/etc/systemd/system/ 目录中创建一个服务文件

复制代码
sudo nano /etc/systemd/system/myapp.service

添加以下内容,并替换应用程序的实际路径

bash 复制代码
[Unit]
Description=My .NET Core Application

[Service]
WorkingDirectory=/path/to/publish/directory
ExecStart=/usr/bin/dotnet /path/to/publish/directory/YourApp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

创建服务文件后,重新加载 systemd 以读取新的服务文件。

复制代码
sudo systemctl daemon-reload

设置服务开机启动,然后立即启动服务。

复制代码
sudo systemctl enable myapp.service
sudo systemctl start myapp.service

使用 systemd 命令来管理和监视服务

  • Check Status : sudo systemctl status myapp.service
  • Restart Service : sudo systemctl restart myapp.service
  • Stop Service : sudo systemctl stop myapp.service

我的开源项目

相关推荐
lisanmengmeng17 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮17 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹17 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
孙克旭_17 小时前
k8s基础组件与创建资源
运维·docker·容器·kubernetes
孙克旭_18 小时前
云原生基础之Containerd容器运行时
运维·云原生
分布式存储与RustFS18 小时前
RustFS 自建对象存储实战目录:110 篇按场景分类(持续更新)
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
无忧_wy18 小时前
MoneyPrinterTurbo 自动化视频生成实战指南
运维·人工智能·自动化·音视频
木头左1 天前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
Linux-lucky1 天前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默1 天前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu