服务部署:Linux系统部署C# .NET项目

1. 安装 .NET SDK

首先,你需要在你的 Linux 系统上安装 .NET SDK。

Ubuntu系统:
  1. 下载 Microsoft 包配置文件

    复制代码
    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

    这个命令使用 wget 从 Microsoft 的官方包仓库下载一个配置文件,并将其保存为 packages-microsoft-prod.deb。这个文件包含了 Microsoft 包仓库的配置信息。

  2. 安装包配置文件

    复制代码
    sudo dpkg -i packages-microsoft-prod.deb

    这个命令使用 dpkg(Debian Package Manager)来安装刚才下载的 .deb 文件。这会将 Microsoft 包仓库添加到你的系统中,使你能够从该仓库安装软件包。

  3. 更新包列表

    复制代码
    sudo apt-get update

    这个命令更新本地的包列表,从而使系统知道所有可用的软件包及其版本信息。因为我们刚刚添加了一个新的包仓库,所以需要更新包列表。

  4. 安装 HTTPS 传输工具

    复制代码
    sudo apt-get install -y apt-transport-https

    这个命令安装 apt-transport-https,它允许 apt 使用 HTTPS 协议来下载软件包。虽然大多数现代系统已经预装了这个工具,但确保它已安装是一个好的做法。

  5. 再次更新包列表

    复制代码
    sudo apt-get update

    再次更新包列表,以确保新添加的 HTTPS 传输工具被正确识别并使用。

  6. 安装 .NET SDK

    复制代码
    sudo apt-get install dotnet-sdk-6.0
    
    sudo apt-get install -y dotnet-sdk-6.0

第二个命令的 -y 选项表示自动回答"是"以确认安装,不需要用户手动干预输入确认。

2. 发布 .NET MVC 项目

在你的开发环境中,使用 dotnet publish 命令来发布你的 .NET MVC 项目。

复制代码
dotnet publish --configuration Release

发布后的文件通常会位于 bin/Release/net6.0/publish 目录下。

3. 将发布的文件复制到服务器

你可以使用 scp 或其他工具将发布的文件复制到你的 Linux 服务器上。

4. 运行 .NET 应用

在你的 Linux 服务器上,导航到你上传发布文件的目录,并运行应用。

复制代码
dotnet YourProject.dll

启动成功之后会在终端输出日志信息:

为了确保应用在后台运行并在系统重启后自动启动,你可以使用 systemd 来管理它。

5. 使用 systemd 管理服务

创建一个新的 systemd 服务文件,例如 /etc/systemd/system/kestrel-yourapp.service

复制代码
[Unit]
Description=Your .NET Application

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

[Install]
WantedBy=multi-user.target
启动并启用服务
复制代码
sudo systemctl enable kestrel-yourapp.service
sudo systemctl start kestrel-yourapp.service

6. 验证部署

打开浏览器,访问你的服务器 IP 地址和端口(默认情况下是 5000),验证你的 .NET MVC 应用是否成功运行。例如:http://localhost:5000

相关推荐
Rose sait2 分钟前
【环境配置】Linux配置虚拟环境pytorch
linux·人工智能·python
原来是好奇心9 分钟前
深入Spring Boot源码(六):Actuator端点与监控机制深度解析
java·开发语言·源码·springboot
Victor35624 分钟前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端
缘不易25 分钟前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
小卒过河010426 分钟前
使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址
运维·服务器·数据库
Kiri霧31 分钟前
Range循环和切片
前端·后端·学习·golang
过期动态32 分钟前
JDBC高级篇:优化、封装与事务全流程指南
android·java·开发语言·数据库·python·mysql
WizLC34 分钟前
【Java】各种IO流知识详解
java·开发语言·后端·spring·intellij idea
Victor35640 分钟前
Netty(19)Netty的性能优化手段有哪些?
后端