.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

我的开源项目

相关推荐
秋名山小桃子1 分钟前
Kunlun 2280服务器(ARM)Raid卡磁盘盘符漂移问题解决
运维·服务器
与君共勉121382 分钟前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
岑梓铭8 分钟前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
努力学习的小廉9 分钟前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei13 分钟前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper
7yewh28 分钟前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
Arenaschi32 分钟前
在Tomcat中部署应用时,如何通过域名访问而不加端口号
运维·服务器
小张认为的测试32 分钟前
Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
linux·服务器·测试工具·自动化·php·excel·压力测试
waicsdn_haha39 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
打鱼又晒网40 分钟前
linux网络套接字 | 深度解析守护进程 | 实现tcp服务守护进程化
linux·网络协议·计算机网络·tcp