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

.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

相关推荐
熙曦Sakura23 分钟前
【Linux网络】TCP全连接队列
linux·网络·tcp/ip
脚比路长1 小时前
win11 安装 wsl ubuntu 18.04后换源失败!
linux
菜鸟康1 小时前
Linux——CMake的快速入门上手和保姆级使用介绍、一键执行shell脚本
linux·运维·服务器
金刚猿2 小时前
openfeign 拦截器实现微服务上下文打通
微服务·云原生·架构
卷卷的小趴菜学编程2 小时前
Linux系统之----基础IO
linux·运维·服务器·文件·fopen·文件操作符·位图传递标志位
lcw_lance2 小时前
技术中台-核心技术介绍(微服务、云原生、DevOps等)
微服务·云原生·devops
陈苏同学2 小时前
[已解决] VS Code / Cursor / Trae 的 PowerShell 终端 conda activate 进不去环境的常见问题
linux·windows·conda
我不是秃头sheep3 小时前
Ubuntu 安装 Docker(镜像加速)完整教程
linux·ubuntu·docker
lcw_lance3 小时前
业务中台-典型技术栈选型(微服务、容器编排、分布式数据库、消息队列、服务监控、低代码等)
数据库·分布式·微服务
Naylor3 小时前
微服务概述
微服务·架构·springcloud