华为云云耀云服务器L实例评测|使用Linux系统与Docker部署.net/c#项目

目录

前言

如何在CentOS运行项目

登录CentOS

使用Rider打包

使用Visual Studio打包

项目运行

后台运行

开放端口 

如何在Docker中运行项目

项目运行


前言

本章详细介绍,.net Core项目从打包到部署上华为云云耀云服务器L实例的过程与一些细节问题。在这里我们分别以系统镜像的CentOS和应用镜像的Docker可视化Portainer进行举例,从零到一的部署过程。

如何在CentOS运行项目

登录CentOS

服务器选择,华为云云耀云服务器L实例为例,选择自己所在区域,然后选择系统镜像、CentOS

服务器购买完成后,第一步先去控制台,找到刚才购买的服务器,进行重置密码,一定要勾选“自动重启”这样修改的密码才能立刻生效。

然后在控制台找到弹性公网IP,与刚才修改的密码,登录自己的服务器

使用Rider打包

如果使用的IDE是Rider,点击右上角的小火箭图标,然后再点击下拉框中的编辑配置

在弹窗的窗口中,点击左上角的+号,选择Publish to folder(发布到文件夹)

 然后配置我们的一些打包信息

TargerLocation:打包文件的存放地址,默认即可

Targer framework:net的版本号,这个会默认与当前项目运行的版本相同

DeployMent Mode:在这个选项的下拉框中有两种发布模式,一个是Self-Contained,另一个是Framework-Dependent

  1. Self-Contained(自包含):这种模式下,发布的应用程序会包含所有需要运行的内容,包括.NET Core运行时和.NET Core库。这意味着应用程序可以在没有.NET Core运行时环境的机器上运行。
  2. Framework-Dependent(框架依赖):这种模式下,发布的应用程序不包含.NET Core运行时和库,它依赖于目标机器上的.NET Core运行时环境。

通俗一点就是,一个直接可以丢上去跑,一个需要先配置环境,为了方便,我这里就选择了Self-Contained,一般小项目其实包也大不了多少,如果项目很多,再考虑使用Framework-Dependent

Target runtime:运行的系统,毫无疑问,这里选择Linux-x64

配置完成后点击保存

点击运行,然后就去我们刚刚配置的TargerLocation路径下找到打包好的文件,如果没改的话一般默认是项目下的bin下面的Release中

使用Visual Studio打包

因为很多人使用Visual Studio,这里也演示一下使用Visual Studio如何打包。

在解决方案资源管理器中右键项目,选择发布。

在右边的窗口中点击发布,点击发布配置文件,选择文件夹,然后下一步

 然后选择发布文件,(默认即可),点击完成!

 然后点击显示所有设置,在弹出的窗口中,配置选择Release,部署模式也就是我们刚刚在RD那边打包时DeployMent Mode中的Self-Contained(自包含),目标运行选择我们的服务器系统Linux-x64。点击保存

点击窗口中的发布按钮,然后去刚刚设置的打包路径就可以看见打包好的文件了 

项目运行

将我们刚刚通过Rider或VisualStudio打包好的运行文件COPY到服务器上

 因为我们打包时选择了“独立”,因此不需要装.net

cd到项目copy到服务器的路径,如何直接通过命令   ./yourapp 来启动项目,"yourapp"为你的应用程序的实际名称。

如何发现可能会提示报错

-bash: ./WebApi: Permission denied

这是应用程序文件有执行权限。你可以使用chmod命令来添加执行权限

chmod +x yourapp

然后在执行一遍刚刚的命令,可能又会发现报了一大堆的错误提示

Please install libicu using your package manager and try again. Alternatively you can set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.

不用慌, 这个错误是因为.NET Core运行时需要ICU库来处理全球化和本地化的字符串。在某些Linux发行版中,这个库可能没有预装。

你可以通过安装libicu库来解决这个问题。在UbuntuDebian上,你可以使用以下命令来安装:

sudo apt-get install libicu-dev

CentOSFedora上,你可以使用以下命令来安装:

sudo yum install libicu

如果你的应用程序不需要全球化和本地化的支持,你可以通过设置环境变量来禁用ICU功能:

export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1

然后再运行你的应用程序。此时就可以成功运行了

后台运行

我们可以使用nohup命令让项目在后台运行,nohup命令可以在你退出shell后继续运行你的进程。

CtRl + C结束掉刚才的运行任务,然后用如下命令来运行,这样所有的输出(包括stdout和stderr)都被重定向到output.log文件

nohup ./你的项目名称 > output.log 2>&1 &

 一般来说,没有特意指定output.log的路径情况下,他会在当前项目运行路径下生成,后续我们项目出现了什么问题,就可以把日志找出来看看了。

如果你想要检查你的程序是否在运行,你可以使用ps命令

ps aux | grep 你的项目名称

如果你想要停止你的程序,你可以使用kill命令

kill $(你的项目名称)

开放端口 

在控制台找到安全组,点击配置规则

添加入方向规则,优先级设为1,我的项目端口是5000,因此设置为5000,其他默认即可

我们来测试一下,可以正确发请求到服务器上的程序了

去控制台看看服务器的监控,服务器是昨天买的,也就是说刚刚部署项目cpu最高才用了2%,浪费了,这就去写几个死循环把cpu用起来。

如何在Docker中运行项目

因为我还买了一台云耀云服务器L实例的Docker可视化Portainer,里面已经装好了docker需要的环境,使用docker运行项目我们用这台服务器来测试,如果是装了其他系统,需要自己先去安装一下docker

 如果需要快速部署,VisualStudio发布的时候可以直接将项目发布到DockerHub上,我们直接在服务器上拉镜像就可以,不过,本章节我部署的方式并不是通过从hub拉取镜像,而是带着大家一起编写docker-compose和dockerfile

在上面 如何在CentOS 中运行项目中,我们对项目进行了打包,现在按照刚才的步骤,重新打包一个 Framework-Dependent(框架依赖):发布的应用程序不包含.NET Core运行时和库 如果你嫌麻烦,不想动,没关系,刚刚打包的那个项目也可以用,只不过会让我们接下来要做的事情多此一举。

在打包好的publish同级别路径下创建两个文件,docker-compose和dockerfile

接下来我们一起写一下这两个文件

首先打开Dockerfile,第一步构建镜像,也就是运行项目的环境,然后把项目copy进去,把下面代码中的端口改成你的项目的,然后写上运行命令,就完成了

#基于 `microsoft/dotnet:6.0-core` 来构建我们的镜像
FROM mcr.microsoft.com/dotnet/aspnet:6.0#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
WORKDIR /publish
#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中 
COPY /publish /publish# 监听5157
ENV ASPNETCORE_URLS=http://+:5157#设置Docker容器对外暴露8003端口
EXPOSE 5157#使用`dotnet WebApi.dll`来运行应用程序CMD ["dotnet", "WebApi.dll", "--server.urls", "http://*:5157"]

然后打开docker-compose

version: '3'
services:webapi:image: webapibuild:context: .dockerfile: Dockerfileports:- 5157:5157

在这个文件中,version即这个项目的版本号,image是先去hub上找镜像,找到就拉,找不到就执行我们刚刚的Dockerfile,然后把ports改成你项目中对应的版本号,就完成了。

要注意的一个细节就是,如果你像我一样在项目中使用了数据库,并且也想在docker中安装数据库,如下代码,我拉了一个mysql5.7.18,镜像名称设置为mysql,那么,我在项目中sql连接字符串就不可以使用127.0.0.1或者localhost了,而是要使用下面设置的mysql

version: '3'
services:mysql:restart: alwaysimage: mysql:5.7.18container_name: mysql-lablevolumes:- /apps/mysql/mydir:/mydir- /apps/mysql/datadir:/var/lib/mysql- /apps/mysql/conf/my.cnf:/etc/my.cnf- /apps/mysql/source:/docker-entrypoint-initdb.denvironment:- "MYSQL_ROOT_PASSWORD=password"- "MYSQL_DATABASE=lbhdatabase"- "TZ=Asia/Shanghai"ports:- 3306:3306webapi:image: webapibuild:context: .dockerfile: Dockerfileports:- 5157:5157depends_on:- mysql

项目运行

这两个文件准备好后直接将publish拉到我们的服务器,改个名字。

然后在该路径下执行docker-compose up

 跑起来之后像上面的开放端口一样,打开自己项目的端口,这里我就不重复截图了

测试一下,ok

服务器信息,如果要后台执行,在刚刚的命令后面加一个 -d

docker-compose up -d

此时我的docker服务器已经跑了一个昨天测试时跑的AI识别webapi,和一个.net core 项目还有一个MySQL。再去看看监控,可以看出还是毫无压力的。

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

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

相关文章

Outlook无需API开发连接钉钉群机器人,实现新增会议日程自动发送群消息通知

Outlook用户使用场景: 在企业中,会议和活动的顺利举行对于业务运转和团队协作至关重要。然而,计划的变动总是无法避免,这可能会导致其他人的计划受到影响,打乱原有的安排。为了解决这个问题,许多企业开始使…

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像 项目介绍需要重点关注的几个文件构建cpu版本的docker构建gpu版本的docker(cuda11.2cudnn8) 阅读提示: (1)Paddle的Serving项目中,在t…

【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】-未完成

linux配环境心得:conda/本地配cuda,cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一,服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…

Linux Debian12将本地项目上传到码云(gitee)远程仓库

一、注册码云gitee账号 这个可以参考其他教程,本文不做介绍。 gitee官网:https://gitee.com/ 二、Linux Debian12安装git 如果Linux系统没有安装git,可以使用下面命令安装git sudo apt install git 三、gitee新建仓库 我这只做测试&…

69、配置AWS服务,接收来自RTSP流的推送

基本思想:在上一篇的基础和视频教程之后,进行简单的aws服务,进行RTSP流的接收 第一步: 第二步:配置video_stream,记得选择香港节点 同时记录这个信息,后面的策略需要填充 第三步:进行策略设置 第四步:策略设置,选中右上角的创建策略 第五步、进行json填充 第六步:填…

精益创业的三个测量方法

精益创业三个测量工具【安志强趣讲282期】 趣讲大白话:没法度量就没法改进 **************************** 工具1:AB对比测试 就是产品有两个或多个版本 然后通过外部客户或内部人员评测 可以组织天使用户群:愿意参与的专业人士 工具2&#x…

微服务井喷时代,我们如何规模化运维?

随着云原生技术发展及相关技术被越来越多运用到公司生产实践当中,有两种不可逆转的趋势: 1、微服务数量越来越多。原来巨型单体服务不断被拆解成一个个微服务,在方便功能复用及高效迭代的同时,也给运维带来了不少挑战:…

大数据技术之Hadoop:MapReduce与Yarn概述(六)

目录 一、分布式计算 二、分布式资源调度 2.1 什么是分布式资源调度 2.2 yarn的架构 2.2.1 核心架构 2.2.2 辅助架构 前面我们提到了Hadoop的三大核心功能:分布式存储、分布式计算和资源调度,分别由Hadoop的三大核心组件可以担任。 即HDFS是分布式…

基于Docker从零到一实操MySql的主从复制

文章目录 一、在Docker上安装,启动MySQL查看docker是否安装成功安装mysql查看mysql镜像进入mysql后台操作docker Volume(卷)入门 MySql的主从复制1. 创建MySQL主从复制的网络2. 创建MySQL主服务器3. 创建MySQL从服务器4. 配置主从同步5.测试主…

2023高教社杯数学建模E题思路代码 - 黄河水沙监测数据分析

# 1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响, 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…

在学习编程的过程中,我会记录下以下内容:

在学习编程的过程中,我会记录下以下内容: 常用代码片段:我会记录一些常用的代码片段,例如文件读写、列表操作、字符串处理等。这些代码片段可以在日常编程中快速复用,提高编码效率。 # 文件读取 with open(file.txt,…

软考高级架构师下篇-14面向服务架构设计理论

目录 1. 引言2. SOA的相关概念3. SOA的发展历史4. SOA的参考架构5. SOA 主要协议和规范6. SOA设计的标准要求7. SOA的作用与设计原则8. SOA的设计模式9. SOA构建与实施10. 前文回顾1. 引言 在面向服务的体系结构(Service-Oriented Architecture,SOA)中,服务的概念有了延伸…

使用EMgu检测人脸

1,安装EMgu 在NuGet中,查找并安装EMgu 2,做人脸检测 首先,声明几个重要的类 //Thread.Sleep(3000);matImg = new Mat();capture.Retrieve(matImg, 0); frame=new Image<Bgr, byte>(matImg.Bitmap); 当,frame != null时,检测到人脸 3,给人脸画框 i…

苹果macOS 13.5.2正式发布 修复ImageIO进程

9 月 8 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5.2 更新&#xff08;内部版本号&#xff1a;22G91&#xff09;&#xff0c;本次更新距离上次发布隔了 21 天。 需要注意的是&#xff0c;因苹果各区域节点服务器配置缓存问题&#xff0c;可能有些地方探测到…

索尼 toio™ 应用创意开发征文 | 如何用Python控制Q宝进行机器人擂台赛

你是否曾经想过&#xff0c;如果能用编程来控制真实的物体&#xff0c;那该有多有趣&#xff1f;如果能让一个小方块按照你的指令来移动、旋转、闪烁&#xff0c;那该有多酷&#xff1f;如果能让一个小方块和其他小方块互动&#xff0c;那该有多神奇&#xff1f;这些想法&#…

编程语言的类型划分

汇编语言 低级语言&#xff0c;通过汇编器翻译成机器语言 MOV、PUSH、ADD等 特点&#xff1a; 对机器友好、执行效率高、移植性差。 人类操作不太方便&#xff0c;需要专业人员。 高级语言 C、C、Java、Python、Golang等 最终还是会转化成为机器语言。 执行过程划分 编译型 ●…

OpenText EnCase Endpoint Security 识别潜在的网络安全威胁并快速消灭威胁

如今&#xff0c;敏感数据丢失和 IT 系统中断是各类组织面临的最大危机。网络攻击频率不断攀升、修复成本日益增加以及响应时间延长都加剧了数据丢失的隐患。 OpenText EnCase Endpoint Security 的高效体现在能够加速检测恶意活动&#xff0c;并在其导致不可挽回的损失或丢失敏…

嵌入式IDE(2):KEIL中SCF分散加载链接文件详解和实例分析

在上一篇文章IAR中ICF链接文件详解和实例分析中&#xff0c;我通过I.MX RT1170的SDK中的内存映射关系&#xff0c;分析了IAR中的ICF链接文件的语法。对于MCU编程所使用的IDE来说&#xff0c;IAR和Keil用得比较多&#xff0c;所以这一篇文章就来分析一下Keil的分散文件.scf(scat…

【设计模式】组合模式实现部门树实践

1.前言 几乎在每一个系统的开发过程中&#xff0c;都会遇到一些树状结构的开发需求&#xff0c;例如&#xff1a;组织机构树&#xff0c;部门树&#xff0c;菜单树等。只要是需要开发这种树状结构的需求&#xff0c;我们都可以使用组合模式来完成。 本篇将结合组合模式与Mysq…

有哪些做流程图的软件?分享一些制作方法和注意事项

流程图是一种常用的图表&#xff0c;可以用于表示各种工作流程、系统架构、决策流程等。在现代工作生活中&#xff0c;制作流程图已经成为了必备的技能之一。本文将介绍一些常用的做流程图的工具&#xff0c;并分享一些制作方法和注意事项。 做流程图的工具 1.迅捷画图&#x…