.NET 发布,部署和运行应用程序

ops/2024/10/18 9:20:05/

.NET应用发布

发布.Net应用有很多种方式,下面列举三种发布方式:

  • 单文件发布
  • 跨平台发布
  • Docker发布

单文件发布

        右键工程,选择“发布”,部署模式选择“独立”,目标运行时选择自己想要部署到的系统,我这里用的是linux 64位系统,在文件发布选择项中选择“生成单个文件”,那么发布后生成的就是包含所有环境和依赖项的独立程序,在目标系统中可直接运行改文件。

跨平台发布

        在发布选项中,部署模式选择“独立”,目标运行时选择自己想要部署到的系统,在在文件发布选择项中不选择“生成单个文件”,则是跨平台发布。

Docker发布

        右键工程,选择“添加”,然后选择“Docker支持”,选择目标平台和Dockerfile,配置Dockerfile,发布Dockerfile,使用windows的Powershell打包docker镜像(安装Docker Desktop)。

添加Dockerfile

配置Dokcerfile

Docker镜像打包

Windows打包镜像步骤:

#打开Powershell进入Dockerfile工作目录
cd .../publish#打包Docker镜像
docker build --tag demo:1.0 .#镜像导出
docker save -o d:\demo.tar demo:1.0#将导出镜像复制到远程linux服务器目录#linux Docker镜像导入
docker load -i /api/demo/demo.tar#Docker查询,镜像是否导入
docker images#生成docker容器并启动
docker run -d -p 9000:5000 --name demo demo:1.0

.NET应用部署

部署和运行.Net应用有也很多种方式,下面列举:

  • 单文件直接运行
  • 服务运行
  • Docker运行

单文件直接运行

        将发布的.NET应用程序文件复制到目标平台目录,首先将运行文件赋权,然后输入命令直接运行程序。

chmod +x demo  #给文件赋权
./demo         #直接运行程序

服务运行

        通过在/etc/systemd/system/中创建一个服务,并添加配置,然后使能服务,运行服务。查询dotnet安装位置命令

#创建服务
cd /etc/systemd/system/
vim api.service#添加服务配置
[Unit]
Description=Example .NET Web API App running on Ubuntu[Service]
WorkingDirectory=/api/ubuntu
ExecStart=/usr/bin/dotnet /api/ubuntu/ProgramShow.WebApi.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-api
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false[Install]
WantedBy=multi-user.target#使能服务
systemctl enable api.service#运行服务
systemctl start api.service

注意:ExecStart=/usr/bin/dotnet为dotnet安装文件,查询dootnet安装位置,使用命令:

whereis dotnet                                #查询dotnet安装位置
/usr/bin/dotnet /usr/lib/dotnet /etc/dotnet   #查询结果

WorkingDirectory=/api/ubuntu为应用程序路径

Docker运行

        Docker导入制作好的服务镜像,创建容器并启动容器。

#linux Docker镜像导入
docker load -i /api/demo/demo.tar#Docker查询,镜像是否导入
docker images#生成docker容器并启动
docker run -d -p 9000:5000 --name demo demo:1.0

Nginx反向代理

        使用Nginx反向代理,能够使用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址。如果不适用方向代理,外部电脑可能访问改服务。

#安装完nginx后进入sites-available目录
cd /etc/nginx/sites-available/#创建nginx服务
vim api#配置服务
server {listen 9000;location / {proxy_pass http://localhost:5000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection keep-alive;proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}
}#查看服务
ln -s ../sites-available/api ./#重启ngnix服务
nginx -s reload   

参考:

.NETCore项目在Windows下构建Docker镜像并本地导出分发到CentOS系统下_.net程序打包成docker镜像-CSDN博客

[ASP.NET Core] 6.5 发布和部署应用 IIS/Nginx/Docker_哔哩哔哩_bilibili


http://www.ppmy.cn/ops/6453.html

相关文章

Python 数据结构和算法实用指南(二)

原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者:飞龙 协议:CC BY-NC-SA 4.0 第四章:列表和指针结构 我们已经在 Python 中讨论了列表,它们方便而强大。通常情况下,我们使用 Python…

03-JAVA设计模式-迭代器模式

迭代器模式 什么是迭代器模式 迭代器模式(demo1.Iterator Pattern)是Java中一种常用的设计模式,它提供了一种顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示的方法。迭代器模式将遍历逻辑从聚合对象中分离出来…

OpenCV基本图像处理操作(十一)——图像特征Sift算法

图像尺度空间 在一定的范围内,无论物体是大还是小,人眼都可以分辨出来,然而计算机要有相同的能力却很难,所以要让机器能够对物体在不同尺度下有一个统一的认知,就需要考虑图像在不同的尺度下都存在的特点。 尺度空间的…

gpt能生成ppt吗

gpt能生成ppt吗 GPT是一个高度通用的工具,适用于多种场景和领域,制作ppt只是它强大功能的冰山一角,具体包括: 信息查询与解释: 提供科学、技术、历史、文化等领域的详细解释和背景信息。 解答疑问,帮助…

HarmonyOS开发实例:【分布式手写板】

介绍 本篇Codelab使用设备管理及分布式键值数据库能力,实现多设备之间手写板应用拉起及同步书写内容的功能。操作流程: 设备连接同一无线网络,安装分布式手写板应用。进入应用,点击允许使用多设备协同,点击主页上查询…

一次Redis访问超时的“捉虫”之旅

01 引言 作为后端开发人员,对Redis肯定不陌生,它是一款基于内存的数据库,读写速度非常快。在爱奇艺海外后端的项目中,我们也广泛使用Redis,主要用于缓存、消息队列和分布式锁等场景。最近在对一个老项目使用的docker镜…

双向链表也叫双链表

双向链表也叫双链表 双向链表也叫双链表 每个节点都有两个指针,分别指向 直接前驱节点、直接后继节点 双向链表中任意一个节点,都可以通过通过它的前驱节点和后继节点,访问其他节点 节点如下 节点定义 ListNode // 节点的值 T element; /…

华为校招机试 - 健康餐(20240410)

题目描述 某减肥食堂,每一份菜都标记了卡路里。 一位顾客,根据营养师的建议,每次饮食都要将卡路里控制在一定区间内(含上下限的值),请问 他有多少种选择? 为了简单起见,每份菜的卡路里用整数表示,且每份菜的卡路里数各不相同; 同一个菜品可以打任意多份。 输入描…