服务部署: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

相关推荐
深色風信子9 分钟前
Docker newapi
运维·docker·容器·newapi
GetcharZp10 分钟前
比 Zap 还要快?Go 社区高性能日志神器 Zerolog 落地实践指南
后端
mounter62514 分钟前
【内核新动向】告别物理槽位束缚:深度解析 Linux Virtual Swap Space 机制
linux·内存管理·kernel·swap·virtual swap
handler0118 分钟前
从零实现自动化构建:Linux Makefile 完全指南
linux·c++·笔记·学习·自动化
Ulyanov23 分钟前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
码界筑梦坊26 分钟前
357-基于Java的大型商场应急预案管理系统
java·开发语言·毕业设计·知识分享
anzhxu31 分钟前
Go基础之环境搭建
开发语言·后端·golang
刀法如飞1 小时前
一款Python语言Django框架DDD脚手架,适合中大型项目
后端·python·领域驱动设计
zb200641201 小时前
SpringBoot详解
java·spring boot·后端
yu85939581 小时前
基于MATLAB的随机振动仿真与分析完整实现
开发语言·matlab