当前位置: 首页 > news >正文

【Linux】Ubuntu上安装.NET 9运行时与ASP.NET Core项目部署入门

文章目录

  • 前言
  • 一、运行时安装
    • 1.1 Ubuntu系统配置微软官方软件源
    • 1.2 安装.NET运行时
    • 1.2.1 查看可安装的aspnetcore运行时版本
    • 1.2.2 注册 Ubuntu .NET 向后移植包
    • 1.2.3 安装的aspnetcore运行时
  • 二、ASP.NET Core部署
    • 2.1 设置ASP.Net Core端口
    • 2.2 打包文件
    • 2.3 Ubuntu安装文件传输和解压缩工具
    • 2.4 上传文件与解压
    • 2.5 持久化运行服务
    • 2.6 查找持久化运行服务的进程ID
    • 2.7 客户端访问


前言

本篇文章包含如何在Unbuntu上安装.NET 9运行时,并且完整记录将一个ASP.NET Core项目部署到Linux服务器上。


一、运行时安装

1.1 Ubuntu系统配置微软官方软件源

在Linux系统上启用Microsoft软件包存储服务,需要匹配当前系统的版本

wget https://packages.microsoft.com/config/ubuntu/$(系统版本)/packages-microsoft-prod.deb

ubuntu 24.04版本为例

wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb

1.2 安装.NET运行时

.NET运行时包含两种,dotnet-runtime与aspnetcore-runtime。前者是dotnet-runtime一个通用的运行时环境,用于支持.Net core应用程序的执行,它包含了.Net Core应用程序所需的所有运行时组件和依赖项。而后者aspnetcore-runtime其实是dotnet-runtime的一个超集,在dotnet-runtime的基础上多了关于web的各类服务。比如说通过使用Kestrel web服务器来处理HTTP请求和响应,已经各类用来处理请求管道的中间件,如授权鉴权,拦截器等。

也就是说aspnetcore-runtime是包含dotnet-runtime的。我们在安装aspnetcore-runtime的时候会自动安装对应版本的dotnet-runtime。接下来我们通过安装aspnetcore-runtime 9.0 来演示。

1.2.1 查看可安装的aspnetcore运行时版本

apt-cache search aspnetcore-runtime

上述指令可以看到目前微软官方软件源提供的可安装的运行时版本。截止到本文为止该软件源默认只提供8.0的版本。我们可以通过注册 Ubuntu .NET 向后移植包存储库来实现从.NET 6开始的安装版本

执行sudo apt update后,直接尝试sudo apt install aspnetcore-runtime-9.0。若提示 “无此包”,再考虑 backports PPA,注册 Ubuntu .NET 向后移植包。

1.2.2 注册 Ubuntu .NET 向后移植包

注册 Ubuntu .NET 向后移植包并且更新

如果登录的账户是root类超管,可以去除sudo

--添加.NET backports 软件源:
sudo add-apt-repository ppa:dotnet/backports
--更新软件包列表:
sudo apt update

1.2.3 安装的aspnetcore运行时

下载.NET 9.0运行时

apt install aspnetcore-runtime-9.0

查看.net 运行时版本

dotnet --list-runtimes
dotnet --info

执行dotnet --info结果
显示安装的.NET 运行时包括.NETCore 和AspNetCore运行时。

Host:Version:      9.0.7Architecture: x64RID:          ubuntu.24.04-x64.NET SDKs installed:No SDKs were found..NET runtimes installed:Microsoft.AspNetCore.App 9.0.7 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]Microsoft.NETCore.App 9.0.7 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]Other architectures found:NoneEnvironment variables:Not setglobal.json file:Not foundLearn more:https://aka.ms/dotnet/infoDownload .NET:https://aka.ms/dotnet/download

二、ASP.NET Core部署

2.1 设置ASP.Net Core端口

appsettings.json文件下添加Kestrel配置。指定Kestrel web服务器运行该服务的时候启动的端口
此处演示启动50005端口

"Kestrel": {"Endpoints": {"Http": {"Url": "http://*:50005"}}
}

“http://*:50005"表示 “监听服务器所有网络接口的 50005 端口”,确保外部可访问;若仅需本地访问,像是配合 Nginx 反向代理,可改为"http://localhost:50005”。本处是简单处理。

2.2 打包文件

右键项目开启打包,输出目录为文件夹。并访问该目录,将打包文件压缩成在zip格式
在这里插入图片描述
在这里插入图片描述

2.3 Ubuntu安装文件传输和解压缩工具

如果Ubuntu服务器已经具备了该功能跳过该步骤

安装文件传输工具

apt install lrzsz

安装解压缩工具与使用

sudo apt install unzip
unzip $(文件名)

2.4 上传文件与解压

切换到指定的目录下新建一个文件夹用于存放上传的打包文件

mkdir dotnet
cd dotnet
unzip $(文件名)

2.5 持久化运行服务

nohup dotnet $(文件名).dll &

执行指令后会返回一个进程ID,用于杀死该进程

araby@VM-4-2-ubuntu:~/dotnet/aspNetCoreDemo$ nohup dotnet PublishTest.dll &
[1] 1738235
araby@VM-4-2-ubuntu:~/dotnet/aspNetCoreDemo$ nohup: ignoring input and appending output to 'nohup.out'

杀死进程

kill 1738235

这种方式在服务器断电重启后会无法自动启动服务,需要手动创建守护进程。创建守护进程的方式我会在下一篇博客里分享。

2.6 查找持久化运行服务的进程ID

查找dotnet下的服务

ps aux | grep dotnet

记得dll名称,找到指定dll对应的ID

ps -ef | grep -v grep | grep $(dll名称).dll

重新部署的时候需要先kill进程,部署完毕后在持久化进程。


2.7 客户端访问

在这里插入图片描述

http://www.dtcms.com/a/302160.html

相关文章:

  • k8s 1.30 通过helm部署ingress-controller-4.12.1
  • Java面试宝典:MySQL8新特性
  • Caddy服务器指南
  • 架构实战——互联网架构模板(“开发层”和“服务层”技术)
  • 【服务器知识】nginx配置ipv6支持
  • 低代码可视化AR远程协助、巡检、装配、质检新平台-元境智搭平台
  • Odoo:免费开源的需求驱动物料需求计划(DDMRP)解决方案
  • 低轨星座通信路径规划仿真:基于Dijkstra算法的星间链路优化实现
  • Day 24:元组与os模块
  • NAS远程访问新解法:OMV与cpolar的技术协同价值
  • Maven中的bom和父依赖
  • 从0到500账号管理:亚矩阵云手机多开组队与虚拟定位实战指南
  • 从0开始学习R语言--Day60--EM插补法
  • C++11(上)(右值引用、移动构造)
  • 低速信号设计之 SMBUS 篇
  • Ubuntu服务器上JSP运行缓慢怎么办?全面排查与优化方案
  • Jenkins + SonarQube 从原理到实战一:基于 K8s 部署与使用(含中文插件与 Python 扫描)
  • 企业级日志分析系统ELK
  • R语言常用扩展包
  • 绳子切割 图论
  • Nestjs框架: 多租户与多数据库的架构设计与实现
  • 【LeetCode】算法详解#10 ---搜索二维矩阵II
  • React 项目中使用 Redux 实现公共状态共享
  • 从 WAIC 2025 的火爆,看 AI 时代视频“入口层”的技术演进
  • flink yarn 问题排查
  • [VLDB 2025]面向Flink集群巡检的交叉对比学习异常检测
  • 数据驱动与智能重构:定制开发开源AI智能名片S2B2C商城小程序对数字营销话语权的重塑
  • Spring ai 调用大模型
  • 盲盒抽卡机小程序系统开发:连接线上线下娱乐新桥梁
  • uniapp 更新apk有缓存点不动,卸载安装apk没有问题。android