作为开源的忠实粉丝,我喜欢 .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 作为平台:
在下一个屏幕上添加以下内容: 登录重定向 URI:https://localhost:5001/authorization-code/callback
注销重定向 URI:https://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 登录后遇到关联错误,您需要手动将SameSite
cookie 属性设置为None
,并在服务器上启用 SSL (HTTPS)。详细了解 SameSite 如何影响您的应用程序。
要点
在 Linux 上开发 .NET Core 应用程序不再是科幻小说中的内容。由于 Microsoft 开始放弃闭源和依赖于平台的解决方案,基于 Linux 的开发环境有其优势。我相信VSCode和Rider等工具(也可在每个平台上使用)已经足够成熟,足以成为经典 Visual Studio IDE for Windows 的合理竞争对手。我已经成功使用 Linux 作为 .NET Core 的主要开发环境几年了。亲自尝试一下,并在下面的评论中告诉我们您的体验!