Linux 环境下运行 .NET 8.0 core项目

devtools/2024/12/25 12:52:26/

在 Linux 环境下运行 .NET 8.0 项目,.NET 已支持跨平台运行,以下是完整的步骤:

 1. 安装 .NET 8.0 SDK 或运行时
首先需要在 Linux 系统中安装 .NET 8.0 SDK 或运行时。

 1.1 添加 Microsoft 包管理源
运行以下命令添加 Microsoft 包管理源并安装必要的依赖项:

bash
sudo aptget update && sudo aptget install y wget apttransporthttps softwarepropertiescommon
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release rs)/packagesmicrosoftprod.deb O packagesmicrosoftprod.deb
sudo dpkg i packagesmicrosoftprod.deb
sudo aptget update


> 注:根据你的 Linux 发行版,修改上述命令,例如 CentOS、Fedora 等需要其他配置源。

 1.2 安装 .NET SDK 或运行时
安装完整的 SDK(适合开发):

bash
sudo aptget install y dotnetsdk8.0


如果只需要运行应用程序,可以安装运行时:

bash
sudo aptget install y dotnetruntime8.0


 2. 验证安装
确保 .NET 安装正确:

bash
dotnet version


输出类似以下内容即表示安装成功:

8.0.100


 3. 部署 .NET 8.0 项目到 Linux

 3.1 在 Windows/开发环境构建项目
1. 确保项目的 csproj 文件的 TargetFramework 已设置为 .NET 8.0:
   xml
   <TargetFramework>net8.0</TargetFramework>
   
2. 使用以下命令在 Windows 或开发环境中发布项目:
   bash
   dotnet publish c Release r linuxx64 selfcontained=false o ./publish
   
    c Release:使用 Release 配置。
    r linuxx64:指定目标平台为 Linux x64。
    selfcontained=false:依赖 Linux 上的 .NET 运行时(推荐)。
    o ./publish:将输出文件存储在 publish 目录中。

   > 如果你希望应用程序在目标环境上无需额外安装 .NET 运行时,可以设置 selfcontained=true。

 3.2 将文件复制到 Linux
使用 scp 或其他工具将发布目录复制到 Linux:

bash
scp r ./publish username@linuxserver:/path/to/project


 4. 在 Linux 上运行项目
1. 使用 SSH 登录到目标 Linux 服务器。
2. 导航到项目的 publish 目录:
   bash
   cd /path/to/project
   
3. 运行项目:
   bash
   dotnet YourApp.dll
   

 5. 使用服务托管应用程序(可选)
如果你的应用需要长时间运行,可以通过 systemd 服务来管理:

 5.1 创建服务文件
创建一个服务文件,例如 /etc/systemd/system/yourapp.service:

ini
[Unit]
Description=YourApp Service
After=network.target

[Service]
WorkingDirectory=/path/to/project
ExecStart=/usr/bin/dotnet /path/to/project/YourApp.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=yourapp
User=yourusername
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multiuser.target


 5.2 启动服务
1. 重新加载 systemd 配置:
   bash
   sudo systemctl daemonreload
   
2. 启动服务:
   bash
   sudo systemctl start yourapp
   
3. 设置开机启动:
   bash
   sudo systemctl enable yourapp
   

 6. 使用 Docker 部署(可选)
如果更习惯容器化运行应用,可以使用 Docker:

 6.1 创建 Dockerfile
在项目根目录创建 Dockerfile:

dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY ./publish .
ENTRYPOINT ["dotnet", "YourApp.dll"]


 6.2 构建和运行容器
1. 构建镜像:
   bash
   docker build t yourapp:latest .
   
2. 运行容器:
   bash
   docker run d p 5000:80 yourapp:latest
   


http://www.ppmy.cn/devtools/145261.html

相关文章

深度学习之超分辨率算法——FRCNN

– 对之前SRCNN算法的改进 输出层采用转置卷积层放大尺寸&#xff0c;这样可以直接将低分辨率图片输入模型中&#xff0c;解决了输入尺度问题。改变特征维数&#xff0c;使用更小的卷积核和使用更多的映射层。卷积核更小&#xff0c;加入了更多的激活层。共享其中的映射层&…

html固定头和第一列简单例子

<!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>冻结第一行和第一列的表格</titl…

网络协议入门

一、概述 1、模型 为了减少协议设计的复杂性&#xff0c;大多数网络模型均采用分层的方式来组织。每一层都有自己的功能&#xff0c;就像建筑物一样&#xff0c;每一层都靠下一层支持。每一层利用下一层提供的服务来为上一层提供服务&#xff0c;本层服务的实现细节对上层屏蔽…

外包干了两年,技术退步明显...

先说一下自己的情况&#xff0c;普通本科&#xff0c;曾在外包干了2年多的功能测试&#xff0c;再加上大环境不好&#xff0c;那时我整个人心惊胆战的&#xff0c;怕自己卷铺盖走人了&#xff0c;所以当时我感觉自己不能够在这样蹉跎下去了&#xff0c;长时间呆在一个舒适的环境…

我在华为的安全日常

在华为工作了数年后&#xff0c;我养成了一个习惯&#xff1a;每次离开座位&#xff0c;即便是去卫生间&#xff0c;我也会条件反射地锁屏电脑。晚上回到家&#xff0c;躺在床上&#xff0c;脑海中偶尔会闪过一丝疑虑&#xff1a;办公室的门窗是否关好&#xff1f;虽然这种担忧…

【UE5 C++课程系列笔记】11——FString、FName、FText的基本使用

目录 概念 常用操作示例 一、FString 1.1 创建字符串 1.2 字符串拼接 1.3 字符串长度 1.4 字符串查找 1.5 字符串替换 1.6 比较字符串 二、FName 2.1 创建FName 2.2 比较FName 2.3 在容器中使用 FName 三、FText 3.1 创建FText 3.2 格式化FText 3.3 显示文本…

计算机网络压缩版

计算机网络到现在零零散散也算过了三遍&#xff0c;一些协议大概了解&#xff0c;但总是模模糊糊的印象&#xff0c;现在把自己的整体认识总结一下&#xff0c;&#xff08;本来想去起名叫《看这一篇就够了》&#xff0c;但是发现网上好的文章太多了&#xff0c;还是看这篇吧&a…

Windows开启IIS后依然出现http error 503.the service is unavailable

问题背景 已启用IIS服务&#xff0c;配置步骤可以参考Windows10 IIS Web服务器安装配置 问题描述 在这一步浏览网站时&#xff0c;并没有出现默认首页&#xff0c;而是 http error 503 the service is unavailable 问题解决 参考 成功解决http error 503.the service is un…