您想尝试Blazor ,但您不是Windows人士吗? 严格是Linux开发人员? 你真幸运。 .NET Core的目标之一就是实现跨平台 ,因此今天我们将看到Microsoft最热门的新前端开发项目Blazor真正实现了“跨平台”。

在开发Blazor应用并无需使用Windows机器的情况下进行部署时,请与我一起学习。 这是我们要做的:

  • 设置我们的(Linux)开发人员机器
  • 构建一个小型Blazor应用
  • 将其部署到Linux VM

因此,让我们开始吧。

1.设置桌面

首先,我们必须建立一个开发人员环境。 为此,我将首先进行全新的Ubuntu桌面安装,因为它从未做过任何事情,因此我们可以包含开始使用所需的所有步骤。

部署Blazor到nginx_分享

安装Git

我们要做的第一件事是安装Git。 您可能已经拥有了,但这是所需的步骤之一。 打开一个终端并输入:

sudo apt install git

安装Git之后,我们需要获取某种IDE。 我建议使用Visual Studio Code,这就是我在本教程中将要使用的代码。

安装Visual Studio代码

首先,我们需要安装一些依赖项:

  1.  
    sudo apt update
  2.  
    sudo apt install software-properties-common apt-transport-https wget

然后,我们将导入Microsoft GPG密钥:

wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -

接下来,我们将启用VSCode存储库:

sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"

然后安装它:

  1.  
    sudo apt update
  2.  
    sudo apt install code

现在,您已经安装了Visual Studio Code。

是的,我知道在您向我发送仇恨邮件之前,您可以进入软件管理器并安装VS Code。 由于某种原因,我将展示如何手动执行该操作,始终了解Linux系统的运行状况,并有意安装它们,以便您完全控制。 如果您想单击软件管理器中的按钮,那也很酷。

部署Blazor到nginx_分享_02

安装.NET Core

要使Blazor正常工作,您必须在本地计算机上安装.NET Core。 有几种方法可以做到这一点。 我们将直接按照Microsoft的指示安装.NET Core SDK和Runtime。 根据所使用的Linux版本,它可能有所不同。 见说明你的发行版。

首先,您需要注册Microsoft密钥和feed:

  1.  
    wget -q https://packages.microsoft.com/config/ubuntu/19.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  2.  
    sudo dpkg -i packages-microsoft-prod.deb

然后,我们将安装.NET Core SDK

  1.  
    sudo apt-get update
  2.  
    sudo apt-get install dotnet-sdk-3.1

您可以输入以下命令来验证安装是否正确:

dotnet --version

它看起来应该像这样:(尽管以后版本可能会更新)

部署Blazor到nginx_分享_03

您已经安装了SDK! 现在,我们准备在本地计算机上创建Blazor项目。

2.创建Blazor应用程序(WebAssembly)

因此,您可能已经看过一些有关创建Blazor应用程序的教程,其中大多数都是Windows环境中的Visual Studio。 超级简单,只需按一下按钮。 但是,在Linux或Mac中,您没有合适的Visual Studio版本,但具有dotnet CLI,在这里创建Blazor应用几乎一样容易。

重要的提示

我们可以通过两种方式运行Blazor应用程序。 从Microsoft:

Blazor是一个Web框架,旨在在基于WebAssembly的.NET运行时( Blazor WebAssembly )或ASP.NET Core( Blazor Server)的服务器端的浏览器中运行客户端

我们将首先在客户端运行它,这意味着:

Blazor应用程序,其依赖项和.NET运行时已下载到浏览器中。该应用程序直接在浏览器UI线程上执行。

我们将其作为独立部署进行部署。

独立部署 -独立部署将Blazor WebAssembly应用程序作为客户端直接请求的一组静态文件来提供。 任何静态文件服务器都可以服务Blazor应用程序。

这种方法有一些缺点,我们将讨论这些缺点,但是现在,我们要构建它以便可以将其托管在任何静态服务器上。

Blazor服务器包含在.NET Core 3.0中,但WebAssembly仍处于预览状态。 因此,我们需要为其安装模板。

您可以使用以下命令来获取模板:

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.1.0-preview4.19579.2

接下来,我们将创建一个新的Blazor WebAssembly应用

dotnet new blazorwasm -o BlazorDemo

进入目录并运行它:

  1.  
    cd BlazorDemo
  2.  
    dotnet run

您的终端窗口应如下所示:

部署Blazor到nginx_分享_04

现在,您可以在网络浏览器中打开它并查看页面:

部署Blazor到nginx_分享_05

在VS Code中将其打开,然后进行自己的修改并进行尝试。

因此,现在我们将使用这个基本的Blazor应用程序并将其部署在不同的地方。

3.将其部署到Linux服务器(WebAssembly)

让我们看看将其推送到常规Linux托管服务器将需要什么。 为此,我将使用Digital Ocean 5美元的特殊服务器。 我从头开始创建它,再次显示启动和运行它所需的所有步骤。 我们将在其上运行CentOS 7。

部署Blazor到nginx_分享_06

设置我们的服务器

要进行设置,我将要对其进行更新:

sudo yum update

然后,我将在其上安装Nginx来提供我们的静态文件。

  1.  
    sudo yum install epel-release
  2.  
    sudo yum install nginx

如果您已经设置了可提供静态文件的Web服务器,则不必执行以下步骤。

然后,我将启动我们的Nginx服务器:

sudo systemctl start nginx

现在就可以开始了。

部署Blazor到nginx_分享_07

建立部署(WebAssembly)

现在我们要部署应用程序。

现在,在您的应用程序的主文件夹中打开命令提示符,然后运行以下命令:

dotnet publish -c Release -r linux-x64

我们将进入发布文件夹并查找dist文件夹:

cd bin/Release/netstandard2.1/linux-x64/publish/BlazorDemo/dist

在这里,我可以看到文件列表。

部署Blazor到nginx_分享_08

我将这些复制到我的新Linux服务器上。 我正在使用SCP,但是您可以使用任何您认为可行的方法:

scp -r * web@sillyblazordemo.jeremymorgan.com:/usr/share/nginx/html

现在,我将其加载到Web浏览器中:

部署Blazor到nginx_分享_09

好吧,那太酷了! 因此,此.NET Core应用程序已转换为可以在任何地方托管的静态文件。 我可以将它放在IIS或S3上,或者放在任何地方,它都可以正常工作。 您甚至可以在Github Pages上托管它! 。

这很棒,因为C#和Razor文件被编译成.NET程序集,而Blazor WebAssembly引导.NET运行时并将程序集直接加载到浏览器中。

但是它需要现代的浏览器,并且要下载到浏览器上才能拥有巨大的负载。

为了真正利用Blazor的功能,我们应该设置Blazor Server软件包。 如果您真的想知道不同之处,可以在这里了解更多 。

4.创建Blazor应用程序(Blazor服务器)

现在,我们将创建一个Blazor Server应用程序。

dotnet new blazorserver -o BlazorServerDemo

他创建了另一个Blazor应用程序,然后键入

dotnet run

它启动了我们的本地应用程序:

部署Blazor到nginx_分享_10

看起来很熟悉 只是现在我没有兔子头。

部署Blazor到nginx_分享_11

因此,让我们发布它。 我们将其发布为独立的应用程序,因此我们可以在我们的Nginx服务器上运行它,而无需安装.NET Framework。

dotnet publish -c Release --self-contained -r linux-x64

然后,我们进入发布目录:

cd bin/Release/netcoreapp3.1/linux-x64/publish/

然后将它们复制到主机上创建的应用程序目录中(您可能会有所不同)

scp -r * web@sillyblazordemo.jeremymorgan.com:/home/web/apps/BlazorServerDemo

5.设置.NET Core服务器

要运行.NET Core应用程序(甚至是自包含的),需要依赖一些。 我们将为CentOS安装以下软件,如果您使用的是其他操作系统,则可以在此处检查所需的依赖项 。

这是使用Yum安装所需依赖项的命令:

sudo yum install lttng-ust libcurl openssl-libs krb5-libs libicu zlib

接下来,您需要更改SELinux设置,这可能会使您挂断电话:

setsebool -P httpd_can_network_connect 1

现在我们可以运行可执行文件:

./BlazorServerDemo --urls http://0.0.0.0:5000

我们已经建立了一个服务器,并准备在端口5000上运行:

部署Blazor到nginx_分享_12

我们可以在Web浏览器中加载它!

部署Blazor到nginx_分享_13

我们现在已经启动并运行了,但是我们不想只在这样的端口上监听它,因此我们将Nginx用作反向代理。 关闭该过程。

然后让我们在后台运行此操作,最后添加“&”号:

./BlazorServerDemo --urls http://0.0.0.0:5000 &

现在,如果您输入“ jobs”,您应该会看到它正在运行。

部署Blazor到nginx_分享_14

现在,创建以下两个文件夹:

  1.  
    sudo mkdir /etc/nginx/sites-available
  2.  
    sudo mkdir /etc/nginx/sites-enabled

然后编辑您的默认文件

vi /etc/nginx/sites-available/default

并将以下内容添加到您的服务器指令中:

  1.  
    location / {
  2.  
    proxy_pass http: //localhost:5000;
  3.  
    proxy_http_version 1.1 ;
  4.  
    proxy_set_header Upgrade $http_upgrade;
  5.  
    proxy_set_header Connection keep-alive;
  6.  
    proxy_set_header Host $host;
  7.  
    proxy_cache_bypass $http_upgrade;
  8.  
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9.  
    proxy_set_header X-Forwarded-Proto $scheme;
  10.  
    }

现在重启nginx:

sudo systemctl reload nginx

现在,您将看到新页面启动并运行!

现在,您在Linux VM实例上具有完整的Blazor服务器。

结论

因此,在本教程中,我们在Ubuntu计算机上构建了Blazor应用程序(WebAssembly和Blazor Server),并将其推送到CentOS计算机上。 我们不需要任何Windows机器来执行此操作。

我的目的是说明如果您是Linux开发人员,则开发Blazor和.NET Core应用程序非常容易。 我最初是一名Linux开发人员,后来爱上了C#/。NET,现在我可以同时做两件事,而且我喜欢它。 你也会。

.NET Core很棒,我认为Blazor也是如此。 我很高兴开发更多Blazor应用程序并推动其极限。

如果您想了解有关Blazor的更多信息,Pluralsight刚刚发布了一些非常酷的课程。

Blazor-大图片

Blazor-入门

Blazor-身份验证和授权