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

news/2024/5/20 0:28:45 标签: .netcore, Linux

作为开源的忠实粉丝,我喜欢 .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.niftyadmin.cn/n/5102381.html

相关文章

【RS】遥感影像/图片64位、16位(64bit、16bit)的意义和区别

在数字图像处理中,我们常常会听到不同的位数术语,比如64位、16位和8位(64bit、16bit、8bit)。这些位数指的是图像的深度,也就是图像中每个像素可以显示的颜色数。位数越高,图像可以显示的颜色数就越多&…

Rust 语法笔记

声明变量 let 变量名: 类型 变量值 let 变量名 变量值[类型] // 整型 默认 i32;浮点 默认 f64mut 可以通过重新声明的方式来改变变量类型 可以下划线改善数字的可读性 声明常量 const / static 原生类型 primitives 标量类型 scalar type * 有符号整数&#x…

React +AntD + From组件重复提交数据(已解决)

开发场景: react Hooks andt 提交form表单内容给数据库(使用antd的form组件) 问题描述 提交是异步的,请提交方式是POST 方式 提交表单内容给后端,却产生了两次提交记录(当然,数据新增了两条数据)。可以…

华为eNSP配置专题-NAT的配置

文章目录 华为eNSP配置专题-NAT的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接2.2、各终端基本配置2.2.1、PC1和PC2的配置2.2.2、交换机不做任何配置2.2.3、网关路由器的配置2.2.4、模拟互联网的路由器的配置 3、配置静态NAT…

美创科技入选“内蒙古自治区第一届网络安全应急技术支撑单位”

近日,内蒙古自治区党委网信办、国家网络应急技术处理协调中心内蒙古分中心评选“内蒙古自治区网络安全应急技术支撑单位”结果公布。 经自治区各地区、各部门和单位推荐各单位自主申报,资料审查和专家评审等环节,美创科技成功入选“内蒙古自治…

【Python第三方包】实现自动化(pyautogui包)

文章目录 前言一、如何安装pyautogui二、pyautogui鼠标操作2.1 鼠标移动2.2 鼠标点击2.3 拖动鼠标三、键盘操作3.1 按下和释放按键3.2 键盘输入四、截图和图像识别4.1 截图4.2 图像识别总结前言 自动化是现代计算机编程和软件开发中的一个重要概念。通过自动化,我们可以节省时…

网站布局都有哪些?

网站布局是指网页中各元素的布局方式,以下是一些常见的网站布局: 栅格布局:将页面分成一个个小格子,再把内容放到对应的格子中。这种布局有利于提高网页的视觉一致性和用户体验,是网站设计中最常用的布局方式之一。流…

视口 css

视口是浏览器上显示网页的一块区域,大小并不局限于浏览器可视区域范围。PC端和移动端视口差别很大。PC端中视口宽度始终与浏览器窗口宽度一致,移动端视口与浏览器窗口宽度完全独立。 PC端 PC端视口大小等于浏览器窗口可视区域大小,无论浏览…