当前位置: 首页 > article >正文

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

Run .NET Core Application as Systemd Service

.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

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

[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

我的开源项目

酷瓜云课堂-开源知识付费解决方案

  • course-tencent-cloud(酷瓜云课堂 - gitee仓库)
  • course-tencent-cloud(酷瓜云课堂 - github仓库)

http://www.kler.cn/a/390435.html

相关文章:

  • 九州未来再度入选2024边缘计算TOP100
  • 【秋招笔试-支持在线评测】11.13花子秋招(已改编)-三语言题解
  • Java 堆内存管理详解:`-Xms` 和 `-Xmx` 参数的使用与默认内存设置
  • golang分布式缓存项目 Day1 LRU 缓存淘汰策略
  • 探索 HTTP 请求方法:GET、POST、PUT、DELETE 等的用法详解
  • 企业如何提高团队管理的能力?
  • Vue3 - 小兔仙 - day2
  • 面试经典 150 题:121,125
  • 批量混剪矩阵发布助力短视频营销快速获客
  • 深度学习服务器租赁AutoDL
  • 使用git进行多人协作开发项目流程
  • Android WebSocket ping pong机制
  • MySQL如何利用索引优化ORDER BY排序语句
  • 【博主推荐】VUE开发常用技术点收集
  • QT中使用图表之QChart绘制动态折线图
  • Sam Altman:年底将有重磅更新,但不是GPT-5!
  • C# 有趣的小程序—桌面精灵详细讲解
  • docker save 和 docker load介绍
  • CTF记录
  • Chromium 中chrome.tabs扩展接口定义c++
  • C语言之简单的获取命令行参数和环境变量
  • 进程 线程 和go协程的区别
  • C++ 内联函数 详解分析 (含代码分析)
  • 深入 JVM 调优:全面提升 Java 应用性能
  • python获取iOS最近业务日志的两种方法
  • 2024华为OD机试真题---中文分词模拟器