.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

我的开源项目

相关推荐
KYGALYX1 小时前
在Linux中备份msyql数据库和表的详细操作
linux·运维·数据库
余—笙2 小时前
Linux(docker)安装搭建CuteHttpFileServer/chfs文件共享服务器
linux·服务器·docker
lang201509282 小时前
Linux高效备份:tar与gzip完全指南
linux·运维·服务器
IDOlaoluo2 小时前
OceanBase all-in-one 4.2.0.0 安装教程(CentOS 7/EL7 一键部署详细步骤)
linux·centos·oceanbase
wanhengidc3 小时前
云手机的基本原理
运维·服务器·游戏·智能手机·云计算
篙芷3 小时前
两台服务器 NFS 共享目录实战
运维·服务器
catoop3 小时前
在 WSL 的 Ubuntu 中安装和配置 SSH 服务
linux·ubuntu·ssh
Hard but lovely3 小时前
linux: centos 软件包管理 yum源
linux·运维·centos
悲伤小伞3 小时前
Linux_Socket_UDP
linux·服务器·网络·c++·网络协议·udp
2301_816073833 小时前
Chrony服务器
运维·服务器