当前位置: 首页 > news >正文

OpenEuler学习笔记(十四):在OpenEuler上搭建.NET运行环境

在这里插入图片描述

一、在OpenEuler上搭建.NET运行环境

基于包管理器安装

  1. 添加Microsoft软件源:运行命令sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm,将Microsoft软件源添加到系统中,以便后续能够从该源安装.NET相关的包。
  2. 安装.NET运行时或SDK:若只需要运行.NET应用程序,可安装运行时。比如安装ASP.NET Core运行时,执行sudo dnf install aspnetcore-runtime-8.0。如果要进行.NET开发,则安装SDK,命令为sudo dnf install dotnet-sdk-8.0。可根据实际需求替换版本号。
  3. 验证安装:安装完成后,可以通过dotnet --info命令来查看.NET的安装信息,确认是否安装成功。也可以使用dotnet --list-runtimes查看已安装的运行时列表。

基于二进制文件安装

  1. 下载.NET二进制文件:从.NET官方网站下载适合OpenEuler系统的.NET二进制文件,例如dotnet-sdk-8.0.203-linux-x64.tar.gz
  2. 解压文件:创建一个目录用于存放解压后的文件,如mkdir -p $HOME/dotnet,然后解压下载的文件到该目录,tar zxf dotnet-sdk-8.0.203-linux-x64.tar.gz -C $HOME/dotnet
  3. 配置环境变量:如果使用bash shell,将环境变量添加到~/.bashrc文件,执行echo 'export DOTNET_ROOT=$HOME/dotnet' >> ~/.bashrcecho 'export PATH=$PATH:$HOME/dotnet' >> ~/.bashrc。若是zsh shell,则添加到~/.zshrc文件。添加完后执行source ~/.bashrcsource ~/.zshrc使环境变量生效。
  4. 验证安装:使用dotnet --infodotnet --list-runtimes命令验证安装是否成功。

基于容器安装

  1. 拉取.NET容器镜像:可以从openeuler-docker-images等镜像仓库拉取.NET相关的容器镜像,例如docker pull openeuler/dotnet-aspnet:8.0.3-oe2203sp3
  2. 运行容器:使用docker run命令来运行容器,如docker run -it --name dotnet-aspnet-container openeuler/dotnet-aspnet:8.0.3-oe2203sp3,可以根据实际需求添加端口映射、挂载数据卷等参数。

二、在OpenEuler上部署基于.NET的应用程序

准备工作

  1. 安装.NET运行时环境:确保OpenEuler系统已安装适合应用程序版本的.NET运行时。如果应用程序是基于.NET Core 3.1开发的,需安装.NET Core 3.1运行时;若基于.NET 8开发,则安装.NET 8运行时。可通过包管理器或二进制文件的方式安装,具体操作参考上文。
  2. 获取应用程序文件:将基于.NET的应用程序文件(包括.dll文件、相关配置文件等)准备好,可以通过从代码仓库拉取、从本地复制或通过网络传输等方式获取到OpenEuler服务器上的指定目录,如/opt/apps/myapp

配置应用程序

  1. 配置文件修改:根据实际部署环境,修改应用程序的配置文件,如appsettings.json。可能需要修改数据库连接字符串、日志路径、缓存配置等信息。比如将数据库连接字符串中的服务器地址修改为实际的数据库服务器地址。
  2. 环境变量设置:根据应用程序需求,设置相应的环境变量。如果应用程序需要读取某个环境变量来确定运行模式,可以使用sudo vim /etc/profile命令打开配置文件,在文件末尾添加export MY_APP_ENV=production,保存并退出后,执行sudo source /etc/profile使环境变量生效。

部署应用程序

  1. 使用dotnet命令运行:进入应用程序所在目录,使用dotnet命令运行应用程序。例如应用程序的主项目文件是MyApp.dll,则执行dotnet MyApp.dll。若应用程序有特定的启动参数,可在命令后添加,如dotnet MyApp.dll --server.urls=http://localhost:5000
  2. 作为服务运行:为了便于管理和监控,可以将应用程序配置为系统服务。创建一个.service文件,如sudo vim /etc/systemd/system/myapp.service,在文件中输入以下内容:
[Unit]
Description=My.NET Application
After=network.target[Service]
WorkingDirectory=/opt/apps/myapp
ExecStart=/usr/bin/dotnet /opt/apps/myapp/MyApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=myapp
User=root
Group=root[Install]
WantedBy=multi-user.target

保存并退出后,执行sudo systemctl enable myapp.service将服务设置为开机自启,然后使用sudo systemctl start myapp.service启动服务。

验证与监控

  1. 验证应用程序:在浏览器中输入应用程序的访问地址,如http://localhost:5000,查看应用程序是否正常运行,能否正确显示页面和执行相关功能。也可以使用curl命令进行测试,如curl http://localhost:5000/api/values,检查是否能获取到正确的响应数据。
  2. 监控应用程序:可以使用systemctl status myapp.service命令查看服务的运行状态和日志信息。还可以结合ELK(Elasticsearch、Logstash、Kibana)等日志管理工具来收集和分析应用程序的日志,以便及时发现和解决问题。

相关文章:

OpenEuler学习笔记(十四):在OpenEuler上搭建.NET运行环境

一、在OpenEuler上搭建.NET运行环境 基于包管理器安装 添加Microsoft软件源:运行命令sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm,将Microsoft软件源添加到系统中,以便后续能够从该源安装.…...

神经网络的通俗介绍

人工神经网络,是一种模仿人类大脑工作原理的数学模型。人类的大脑是由无数的小“工作站”组成的,每个工作站叫做“神经元”。这些神经元通过“电线”互相连接,负责接收、处理和传递信息。 一、人类大脑神经网络 人类大脑的神经网络大概长这…...

基于 AWS SageMaker 对 DeepSeek-R1-Distilled-Llama-8B 模型的精调与实践

在当今人工智能蓬勃发展的时代,语言模型的性能优化和定制化成为研究与应用的关键方向。本文聚焦于 AWS SageMaker 平台上对 DeepSeek-R1-Distilled-Llama-8B 模型的精调实践,详细探讨这一过程中的技术细节、操作步骤以及实践价值。 一、实验背景与目标 …...

如何使用DeepSeek R1

以下是如何使用DeepSeek R1的详细步骤: ### 一、注册DeepSeek账户 1. **访问官方网站**: - 打开浏览器,访问[chat.deepseek.com](http://chat.deepseek.com)。 2. **注册账户**: - 使用电子邮件、Google账户或86手机号码…...

大屏 UI 设计风格的未来趋势

在科技飞速革新的时代,大屏设备的应用领域不断拓展,从城市的智能交通指挥中心,到商场的互动广告大屏,再到家庭的超大尺寸智能电视,大屏已然成为信息展示与交互的关键载体。大屏 UI 设计风格也随之不断演变,…...

unity学习22:Application类其他功能

目录 1 是否允许后台运行 1.1 Application.runInBackground,显示是否允许后台运行 1.2 设置的地方 2 打开URL 2.1 Application.OpenURL("") 打开超链接 3 退出游戏 3.1 Application.Quit() 退出游戏 4 场景相关 5 返回游戏状态 6 控制游戏的行…...

51单片机入门_02_C语言基础0102

C语言基础部分可以参考我之前写的专栏C语言基础入门48篇 以及《从入门到就业C全栈班》中的C语言部分,本篇将会结合51单片机讲差异部分。 课程主要按照以下目录进行介绍。 文章目录 1. 进制转换2. C语言简介3. C语言中基本数据类型4. 标识符与关键字5. 变量与常量6.…...

定位的叠放次序 z-index

浮动定位和绝对定位的区别: 浮动只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字,但是绝对定位(固定定位)会压住下面标准流所有的内容。...

ESP32-S3模组上跑通esp32-camera(36)

接前一篇文章:ESP32-S3模组上跑通esp32-camera(35) 一、OV5640初始化 2. 相机初始化及图像传感器配置 上一回继续对reset函数的后一段代码进行解析。为了便于理解和回顾,再次贴出reset函数源码,在components\esp32-camera\sensors\ov5640.c中,如下: static int reset…...

前端性能优化:HMR热更新和预获取加载

最近发现项目开发,有点加载快,有点却是卡机式,甚至刷新导致白屏情况。于是,我找开发和性能优化的方法,找到下面几种。 本文将深入探讨 预获取(Prefetch)、动态导入(Dynamic Import&…...

【自学笔记】计算机网络的重点知识点-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 计算机网络重点知识点一、计算机网络概述二、网络分类三、网络性能指标四、网络协议与体系结构五、数据交换方式六、物理层与数据链路层七、网络层与运输层八、应用…...

算法基础学习——二分查找(附带Java模板)

有单调性的数列一定可以使用二分,没有单调性的题目也可能可以使用二分; (一)整数二分 二分的本质: 在某个整数区间内,存在某种性质使得区间内左半边的数都不满足该性质;而右半边的数都满足该性…...

【llm对话系统】大模型源码分析之llama模型的long context更长上下文支持

1. 引言 Llama模型的一个重要特性是支持长上下文处理。本文将深入分析Llama源码中实现长上下文的关键技术点,包括位置编码(position embedding)的外推方法、注意力机制的优化等。我们将通过详细的代码解析来理解其实现原理。 2. 位置编码的外推实现 2.1 旋转位置…...

单片机基础模块学习——NE555芯片

一、NE555电路图 NE555也称555定时器,本文主要利用NE555产生方波发生电路。整个电路相当于频率可调的方波发生器。 通过调整电位器的阻值,方波的频率也随之改变。 RB3在开发板的位置如下图 测量方波信号的引脚为SIGHAL,由上面的电路图可知,NE555已经构成完整的方波发生电…...

Hive:struct数据类型,内置函数(日期,字符串,类型转换,数学)

struct STRUCT(结构体)是一种复合数据类型,它允许你将多个字段组合成一个单一的值, 常用于处理嵌套数据,例如当你需要在一个表中存储有关另一个实体的信息时。你可以使用 STRUCT 函数来创建一个结构体。STRUCT 函数接受多个参数&…...

最优化问题 - 内点法

以下是一种循序推理的方式,来帮助你从基础概念出发,理解 内点法(Interior-Point Method, IPM) 是什么、为什么要用它,以及它是如何工作的。 1. 问题起点:带不等式约束的优化 假设你有一个带不等式约束的优…...

vim交换文件的工作原理

在vim中,交换文件是一个临时文件,当我们使用vim打开一个文件进行编辑(一定得是做出了修改才会产生交换文件)时候,vim就会自动创建一个交换文件,而之后我们对于文件的一系列修改都是在交换文件中进行的&…...

CISCO路由基础全集

第一章:交换机的工作原理和基本技能_交换机有操作系统吗-CSDN博客文章浏览阅读1.1k次,点赞24次,收藏24次。交换机可看成是一台特殊的计算机,同样有CPU、存储介质和操作系统,只是与计算机的稍有不同。作为数据交换设备&…...

网络直播时代的营销新策略:基于受众分析与开源AI智能名片2+1链动模式S2B2C商城小程序源码的探索

摘要:随着互联网技术的飞速发展,网络直播作为一种新兴的、极具影响力的媒体形式,正逐渐改变着人们的娱乐方式、消费习惯乃至社交模式。据中国互联网络信息中心数据显示,网络直播用户规模已达到3.25亿,占网民总数的45.8…...

2024年终总结——今年是蜕变的一年

2024年终总结 摘要前因转折找工作工作的成长人生的意义 摘要 2024我从国企出来,兜兜转转还是去了北京,一边是工资低、感情受挫,一边是压力大、项目经历少,让我一度找不到自己梦寐以求的工作,我投了一家又一家&#xff…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

Web后端基础(基础知识)

BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...

SpringAI实战:ChatModel智能对话全解

一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM&#xff0…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...