.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

相关推荐
Jing_jing_X3 小时前
AI分析不同阶层思维 二:Spring 的事务在什么情况下会失效?
java·spring·架构·提升·薪资
赵民勇4 小时前
Linux/Unix中install命令全面用法解析
linux·shell
Rabbit_QL4 小时前
【网络设置】Docker 自定义网络深度解析:从踩坑到工程实践
网络·docker·容器
元Y亨H5 小时前
Nacos - 服务发现
java·微服务
苏宸啊6 小时前
Linux指令篇(一)
linux·运维·服务器
我要升天!6 小时前
Linux中《网络基础》
linux·运维·网络
鸽芷咕7 小时前
【2025年度总结】时光知味,三载同行:落笔皆是沉淀,前行自有光芒
linux·c++·人工智能·2025年度总结
羑悻的小杀马特7 小时前
指尖敲代码,笔尖写成长:2025年度总结与那些没说出口的碎碎念
linux·c++·博客之星·2025年度总结
计算机小手7 小时前
使用 Poste.io 自建邮件服务器,Docker一键快速部署
经验分享·docker
晴天¥8 小时前
VMware+Oracle linux LVM/非LVM磁盘扩容
linux·运维·服务器