.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仓库)