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)等日志管理工具来收集和分析应用程序的日志,以便及时发现和解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/67542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vscode编辑器下 Markdown无法显示图片

1.问题 在vscode 编辑器中无法预览 markdon 文件中的图片 2.解决方案 大部分出现这种情况是因为新版本的vscode会阻拦有风险的资源显示,将安全等级调低即可。 方式一: 1.打开任意 MD 文件,ctrl,调出设置 2. 输入 markdown.ch…

php-phar打包避坑指南2025

有很多php脚本工具都是打包成phar形式,使用起来就很方便,那么如何自己做一个呢?也找了很多文档,也遇到很多坑,这里就来总结一下 phar安装 现在直接装yum php-cli包就有phar文件,很方便 可通过phar help查看…

自动化运维的未来:从脚本到AIOps的演进

点击进入IT管理资料库 一、自动化运维的起源:脚本时代 (一)脚本在运维中的应用场景 在自动化运维的发展历程中,脚本扮演着至关重要的角色,它作为最初的操作入口,广泛应用于诸多日常运维工作场景里。 在系统…

【2024年华为OD机试】(B卷,100分)- 热点网站统计(Java JS PythonC/C++)

一、问题描述 题目描述 企业路由器的统计页面需要动态统计公司访问最多的网页URL的Top N。设计一个算法,能够高效动态统计Top N的页面。 输入描述 每一行都是一个URL或一个数字: 如果是URL,代表一段时间内的网页访问。如果是数字N&#…

《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》

DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance)订阅 已识别 - 已识别问题,并且正在实施修复。 1月 29, 2025 - 20:57 CST 更新 - 我们将继续监控任何其他问题。 1月 28, 2025 - 22&am…

智能汽车网络安全威胁报告

近年来随着智能汽车技术的快速发展,针对智能汽车的攻击也逐渐从传统的针对单一车辆控制器的攻击转变为针对整车智能化服务的攻击,包括但不限于对远程控制应用程序的操控、云服务的渗透、智能座舱系统的破解以及对第三方应用和智能服务的攻击。随着WP.29 …

docker中运行的MySQL怎么修改密码

1,进入MySQL容器 docker exec -it 容器名 bash 我运行了 docker ps命令查看。正在运行的容器名称。可以看到MySQL的我起名为db docker exec -it db bash 这样就成功的进入到容器中了。 2,登录MySQL中 mysql -u 用户名 -p 回车 密码 mysql -u root -p roo…

解锁微服务:五大进阶业务场景深度剖析

目录 医疗行业:智能诊疗的加速引擎 电商领域:数据依赖的破局之道 金融行业:运维可观测性的提升之路 物流行业:智慧物流的创新架构 综合业务:服务依赖的优化策略 医疗行业:智能诊疗的加速引擎 在医疗行业迈…

Cloudreve:Star22.3k,免费开源的网盘,支持多种存储方式,它允许用户快速搭建个人或团队的私有云存储服务。

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 Cloudreve是一个基于Web的文件管理和分享系统,它允许用户快速搭建个人或团队的私有云存储服务。该项目以其高度的可定制性和灵活性&#x…

AIGC(生成式AI)试用 20 -- deepseek 初识

>> 基本概念 Ollama -- 运行大模型,管理运行AI大模型的工具,用来安装布置DeepSeek https://ollama.com/ , Get up and running with large language models. AnythingLLM -- 大模型增强应用,GUI大模型交互程序 Download AnythingLLM …

Axure PR 9 旋转效果 设计交互

大家好,我是大明同学。 这期内容,我们将学习Axure中的旋转效果设计与交互技巧。 旋转 创建旋转效果所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.在元件库中拖出一个按钮元件。 创建交互 创建按钮交互状态 1.选中按钮元件&#xf…

Attention--人工智能领域的核心技术

1. Attention 的全称与基本概念 在人工智能(Artificial Intelligence,AI)领域,Attention 机制的全称是 Attention Mechanism(注意力机制)。它是一种能够动态分配计算资源,使模型在处理输入数据…

相同的树及延伸题型(C语言详解版)

从LeetCode 100和101看二叉树的比较与对称性判断 今天要讲的是leetcode100.相同的树,并且本文章还会讲到延伸题型leetcode101.对称二叉树。本文章编写用的是C语言,大家主要是学习思路,学习过后可以自己点击链接测试,并且做一些对…

【Rust自学】15.0. 智能指针(序):什么是智能指针及Rust智能指针的特性

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.0.1 指针的基本概念 指针是一个变量在内存中包含的是一个地址,指向另一个数据。 Rust 中最常见的指针是引用&#xff0c…

记录一次,PyQT的报错,多线程Udp失效,使用工具如netstat来检查端口使用情况。

1.问题 报错Exception in thread Thread-1: Traceback (most recent call last): File "threading.py", line 932, in _bootstrap_inner File "threading.py", line 870, in run File "main.py", line 456, in udp_recv IndexError: list…

电路研究9.2.5——合宙Air780EP中GPS 相关命令使用方法研究

注:本命令仅适用于合宙 4G CAT1 模块(Air780EG 系列)。 正好,我们使用的Air780EP好像也有4G CAT1模块,好像也属于Air780EG系列吧。 这个例子好像比较少就个。 18.9 使用方法举例 18.1GPS 开关:ATCGNSPWR 这…

【C语言】在Windows上为可执行文件.exe添加自定义图标

本文详细介绍了在 Windows 环境下,如何为使用 GCC 编译器编译的 C程序 添加自定义图标,从而生成带有图标的 .exe 可执行文件。通过本文的指导,读者可以了解到所需的条件以及具体的操作步骤,使生成的程序更具专业性和个性化。 目录 1. 准备条件2. 具体步骤步骤 1: 准备资源文…

python编程环境安装保姆级教程--python-3.7.2pycharm2021.2.3社区版

第1步安装解释器python-3.7.2,第2步安装pycharm编程软件 1、安装解释器 1.1 什么是解释器 就是将Python高级程序语言翻译成为计算机可以识别的0、1代码 1.2 安装解释器python-3.7.2(根据自己的操作系统安装适配的解释器,以Windows为例&…

STM32 TIM输入捕获 测量频率

输入捕获简介: IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器…

21.3-启动流程、编码风格(了解) 第21章-FreeRTOS项目实战--基础知识之新建任务、启动流程、编码风格、系统配置 文件组成和编码风格(了解)

21.3-启动流程、编码风格(了解) 启动流程 第一种启动流程(我们就使用这个): 在main函数中将硬件初始化、RTOS系统初始化,同时创建所有任务,再启动RTOS调度器。 第二种启动流程: 在main函数中将硬件初始化、RTOS系统初始化,只…