5分钟内在Linux上安装.NET Core应用程序

news2025/1/16 21:17:20

作为开源的忠实粉丝,我喜欢 .NET Core 的跨平台特性。它开启了无限的可能性,从业余爱好项目、实验和概念验证,到在具有高安全性和可扩展性的经济高效基础设施上运行的大规模高负载生产应用程序。我通常从任何云平台提供商那里获得最简单、最便宜的基于 Ubuntu 的虚拟专用服务器 (VPS),每月 5 美元,而不是更复杂和昂贵的容器实例或云计算服务。

一旦您拥有了 Ubuntu VPS,我将指导您完成如何设置 .NET Core 运行时环境以及如何使用 Okta 身份验证部署 .NET Core Web 应用程序的步骤,所有这些仅使用终点站。

使用 Okta 的好处

Okta 是一项云服务,允许开发人员创建、编辑和安全地存储用户帐户和用户帐户数据,并将它们与一个或多个应用程序连接。使用 Okta,您不必担心手动实现注册、登录和注销流程。在我们的示例应用程序中,我们将设置 Okta 来处理 OAuth 登录的用户管理。设置 .NET Core 在 Linux 上运行有一些技巧(特别是在 AWS 或 Azure 等主机上进行容器化时),但不用担心 - 您将在本教程中获得很好的概述。

先决条件 

乌班图 20.04+
装有Ubuntu Desktop 20.04+的物理机或虚拟机
对于虚拟化我推荐VirtualBox 

在 Linux 上安装 .NET Core SDK/运行时
.NET Core SDK 或运行时:哪一个最好

.NET Core 运行时允许您在 Linux 上运行使用 .NET Core 制作但不包含运行时的应用程序。使用 SDK,您可以运行 .NET Core 应用程序,还可以开发和构建 .NET Core 应用程序。通常,您只需要生产环境中的运行时和开发环境中的 SDK。

今天我们将在同一台机器上构建并运行我们的示例应用程序。那么让我们安装 .NET Core SDK。

添加包存储库 

我们需要添加微软的包签名密钥来使包存储库受到系统的信任。

打开终端并运行以下命令: 

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

 安装SDK

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-3.1

为确保安装成功,请运行:

dotnet --version

输出应该是已安装的 .NET Core 版本。

在 Linux 上构建并运行 .NET Core 应用程序

复制源代码
为了这个例子,我准备了一个示例应用程序。让我们git将其从 GitHub 复制到我们的机器上。
 

git clone https://github.com/oktadeveloper/okta-netcore3-deploy-linux-example okta

进入我们刚刚复制源代码的文件夹:

cd okta

运行构建:

dotnet build

第一次构建可能需要一段时间。那么输出应该是这样的:

Build succeeded.
    0 Warning(s)
    0 Error(s)

运行 .NET Core 应用程序 

要在开发模式下运行应用程序,请键入:

dotnet run

运行示例应用程序将失败,因为我们需要首先设置 Okta 登录。

输出:

Unhandled exception. System.ArgumentNullException: Replace {clientId} with the client ID of your Application. You can copy it from the Okta Developer Console in the details for the Application you created. Follow these instructions to find it: https://bit.ly/finding-okta-app-credentials (Parameter 'ClientId')

登录您的Okta 开发者帐户

导航至Applications,然后选择Add Application

选择 Web 作为平台:

在下一个屏幕上添加以下内容: 登录重定向 URIhttps://localhost:5001/authorization-code/callback

注销重定向 URIhttps://localhost:5001/signout/callback

完成后,单击“完成”

记下您的客户端凭据(客户端 ID客户端密码)。

在您最喜欢的代码编辑器中打开appsettings.json并添加您的凭据。

您可以在仪表板的右上角 找到您的组织 URL :

现在示例应用程序已准备好运行:

dotnet run

输出:

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /home/ubuntu/okta

您现在可以打开浏览器窗口来http://localhost:5000查看应用程序的运行情况。您也可以尝试使用右上角的 Okta 进行记录。

故障排除

如果您在使用 Okta 登录后遇到关联错误,您需要手动将SameSitecookie 属性设置为None,并在服务器上启用 SSL (HTTPS)。详细了解 SameSite 如何影响您的应用程序。

要点

在 Linux 上开发 .NET Core 应用程序不再是科幻小说中的内容。由于 Microsoft 开始放弃闭源和依赖于平台的解决方案,基于 Linux 的开发环境有其优势。我相信VSCode和Rider等工具(也可在每个平台上使用)已经足够成熟,足以成为经典 Visual Studio IDE for Windows 的合理竞争对手。我已经成功使用 Linux 作为 .NET Core 的主要开发环境几年了。亲自尝试一下,并在下面的评论中告诉我们您的体验!

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

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

相关文章

页面打印功能,单选框多选框选中后,打印时不显示选中效果

使用antdv,或者element-ui时,如果对页面进行打印,存在单选,多选样式无法显示的情况,在打印预览界面--》更多设置中,背景图形选中就可以了。

linux挂载数据盘后格式化添加挂点

df -h 查看磁盘大小时,未格式化的磁盘无法查看,可以通过 fdisk -l 命令查看 如果这里看不到数据盘,有可能是数据盘没有挂载到服务器上,可以参考阿里云挂载数据盘操作, 已挂载的数据盘进行格式化创建文件系统&#xff…

《算法通关村第一关——链表经典问题之两个链表的第一个公共子节点问题笔记》

《算法通关村第一关——链表经典问题之两个链表的第一个公共子节点问题笔记》 问题描述 输入两个链表,找出他们的第一个公共节点。 例如下面的两个链表 两个链表的头节点都是已知的,相交之后成为一个单链表,但是相交的位置未知&#xff0c…

leaflet地图线段和区域的回显

线段回显 searchLineArr: [], // 存放搜索到的路段或者道路的线段drawSearchLineArr(line) {/* 移除线段 */this.searchLineArr.forEach((polyline) > {polyline.remove();});this.searchLineArr []/* 移除线段 */this.map.panTo(JSON.parse(line)[0]); // 地图视图移动到线…

Java扫雷游戏总结 (小项目)

【尚学堂Java开发扫雷游戏项目】1个半小时做出java扫雷小游戏_java小游戏_Java游戏开发_Java练手项目_java项目实战_java初级项目_哔哩哔哩_bilibili 前言: 记录的是大致的写代码过程为了视觉上更清晰,下面只是放出了完成该功能的核心代码,把…

分享Java NET Python三大技术下AutojsPro7云控代码

引言 有图有真相,那短视频就更是真相了。下面是三大语言的短视频。 Java源码版云控示例: Java源码版云控示例在线视频 Net源码版云控示例: Net源码版云控示例在线视频亚丁号-知识付费平台 支付后可见 扫码付费可见 Python源码版云控示例&…

【容器】Docker(学习笔记)

一、初识Docker 1、Docker概述 Docker 是一个开源的应用容器擎。 诞生于 2013 年初,基于 Go 语言实现,dotcloud 公司出品(后改名为Docker Inc)。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&a…

【小黑嵌入式系统第三课】嵌入式系统硬件平台(一)——概述、总线、存储设备(RAMROMFLASH)

上一课: 【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM、操作系统 文章目录 一、概述二、总线1. 总线的概念1.1 总线结构1.2 总线类型1.2.1 数据总线1.2.2 程序总线1.2.3 数据地址总线1.2.4 程序地址总线 2. 总线协…

new Object()到底占用几个字节

Java内存模型 对象内存中可以分为三块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding),以64位操作系统为例(未开启指针压缩的情况)Java对象布局 如下图所示: 其中对象头中的Mark Word中的详细信息在文章synchr…

地下水与饮用水提标处理树脂

随着饮用水和地下水污染物检测技术水平的不断提高,世界各国管理机构跟踪监测的水体污染数目也不断增加。近年来,针对砷、高氯酸盐和铀等水体污染物,新的强化控制措施不断的付诸实施。此外,用氯化物及其衍生物进行水体消毒会带来诸…

leetcode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和

1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些…

【ajax】withCredentials

默认值:false。在获取同域资源时设置 withCredentials 没有影响。 true:在跨域请求时,会携带用户凭证 false:在跨域请求时,不会携带用户凭证;返回的 response 里也会忽略 cookie ajax中的作用 跨域请求时…

药物滥用第一篇介绍

AMP: Ampicillin,中文名氨苄青霉素,同义名氨苄西林,一种β-内酰胺类抗生素,属于青霉素家族的一员,化学式为C16H19N3O4S,可治疗多种细菌感染。 氨苄西林为半合成的广谱青霉素(结构如上…

基于单片机设计的家用自来水水质监测装置

一、前言 本文介绍基于单片机设计的家用自来水水质监测装置。利用STM32F103ZET6作为主控芯片,结合水质传感器和ADC模块,实现对自来水水质的检测和监测功能。通过0.96寸OLED显示屏,将采集到的水质数据以直观的方式展示给用户。 随着人们对健…

Unity DOTS World Entity ArchType Component EntityManager System概述

最近DOTS终于发布了正式的版本, 我们来分享以下DOTS里面地几个关键概念,方便大家上手学习掌握Unity DOTS开发。 Unity DOTS 中所有的Entities 都是被放到World世界中。每个Entity在它所在的World里面有唯一不同的ID号来区分。DOTS项目中可以同时有多个World。每个W…

04 接口隔离原则

官方定义 <<代码整洁之道>>作者罗伯特 C马丁 为 “接口隔离原则” 的定义是&#xff1a;客户端不 应该被迫依赖于它不使用的方法&#xff08;Clients should not be forced to depend on methods they do not use&#xff09;。 该原则还有另外一个定义&#xff1…

【Proteus仿真】【STM32单片机】太阳能追光系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用LCD1602液晶、光敏传感器、PCF8591 ADC模块、按键模块、28BYJ48步进电机驱动模块、直流电机模块等。 主要功能&#xff1a; 系统运行后&#x…

网络工程师知识点6

91、3、IP ABC类私有地址和个数 A类私有地址1个&#xff1a;10.0.0.0/8 B类私有地址16个&#xff1a;172.16.0.0~172.31.0.0/16 C类私有地址256个&#xff1a;192.168.0.0~192.168.255.0/24 92、拥塞管理机制的实现过程分为哪两步&#xff1f; 第一步&#xff1a;将准备从一个…

MATLAB中sos2tf函数用法

目录 语法 说明 示例 二阶节系统的传递函数表示 sos2tf函数的功能是将数字滤波器的二阶节&#xff08;section&#xff09;数据转换为传递函数形式。 语法 [b,a] sos2tf(sos) [b,a] sos2tf(sos,g) 说明 [b, a] sos2tf(sos) 返回由 sos 描述的离散时间系统的传递函数系…

璟丰机电丨Parker派克江苏代理商 供应高品质驱动器和电机产品

苏州璟丰机电有限公司是一家专注于工业自动化领域的系统集成商&#xff0c;为客户提供非标自动化系统的设计研发、量身定做、批量生产等非标自动化解决方案&#xff0c;并代理这世界一流品牌的美国Parker派克。 派克Parker是全球领先的运动和控制技术与系统多元化制造商&#…