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

相关推荐
techdashen2 分钟前
深入 Rust enum 的内存世界
开发语言·后端·rust
liudanzhengxi9 分钟前
CRM系统技术文章
linux·服务器·网络·人工智能·新人首发
南境十里·墨染春水12 分钟前
守护进程编程流程
linux·学习
yuhuofei202113 分钟前
【Python入门】Python与PyCharm的安装
开发语言·python·pycharm
吴声子夜歌17 分钟前
Java——类加载机制
java·开发语言·python
龙码精神20 分钟前
TimescaleDB 物联网设备属性历史数据表设计及常用SQL文档
后端
杨校26 分钟前
杨校老师课堂之C++的位运算应用专项训练
开发语言·c++
唐青枫29 分钟前
C#.NET YARP 跨域配置详解:网关统一处理 CORS
c#·.net
笨蛋不要掉眼泪31 分钟前
Java并发编程:线程的创建和运行
java·开发语言·jvm
九伯都32 分钟前
java编写 agent 入门案例
java·开发语言