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

相关推荐
Scott9999HH5 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
EIP低代码平台5 小时前
EIP 低代码平台 - 角色维护
低代码·c#·权限·工作流·netcore
GetcharZp6 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
Yana.nice6 小时前
Linux 只保留 30 天内日志(find命令删除日志文件)
linux·运维·chrome
码智社6 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海6 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖7 小时前
JDK 26 新特性详解
java·开发语言
马优晨8 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
2601_960567968 小时前
电商套图自动化效率的工程量化分析——从逐张生成到批量套图的架构演进
运维·架构·自动化
weixin_446260859 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask