您想尝试Blazor ,但您不是Windows人士吗? 严格是Linux开发人员? 你真幸运。 .NET Core的目标之一就是实现跨平台 ,因此今天我们将看到Microsoft最热门的新前端开发项目Blazor真正实现了“跨平台”。
在开发Blazor应用并无需使用Windows机器的情况下进行部署时,请与我一起学习。 这是我们要做的:
- 设置我们的(Linux)开发人员机器
- 构建一个小型Blazor应用
- 将其部署到Linux VM
因此,让我们开始吧。
1.设置桌面
首先,我们必须建立一个开发人员环境。 为此,我将首先进行全新的Ubuntu桌面安装,因为它从未做过任何事情,因此我们可以包含开始使用所需的所有步骤。
安装Git
我们要做的第一件事是安装Git。 您可能已经拥有了,但这是所需的步骤之一。 打开一个终端并输入:
sudo apt install git
安装Git之后,我们需要获取某种IDE。 我建议使用Visual Studio Code,这就是我在本教程中将要使用的代码。
安装Visual Studio代码
首先,我们需要安装一些依赖项:
-
sudo apt update
-
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"
然后安装它:
-
sudo apt update
-
sudo apt install code
现在,您已经安装了Visual Studio Code。
是的,我知道在您向我发送仇恨邮件之前,您可以进入软件管理器并安装VS Code。 由于某种原因,我将展示如何手动执行该操作,始终了解Linux系统的运行状况,并有意安装它们,以便您完全控制。 如果您想单击软件管理器中的按钮,那也很酷。
安装.NET Core
要使Blazor正常工作,您必须在本地计算机上安装.NET Core。 有几种方法可以做到这一点。 我们将直接按照Microsoft的指示安装.NET Core SDK和Runtime。 根据所使用的Linux版本,它可能有所不同。 见说明你的发行版。
首先,您需要注册Microsoft密钥和feed:
-
wget -q https://packages.microsoft.com/config/ubuntu/19.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
-
sudo dpkg -i packages-microsoft-prod.deb
然后,我们将安装.NET Core SDK
-
sudo apt-get update
-
sudo apt-get install dotnet-sdk-3.1
您可以输入以下命令来验证安装是否正确:
dotnet --version
它看起来应该像这样:(尽管以后版本可能会更新)
您已经安装了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
进入目录并运行它:
-
cd BlazorDemo
-
dotnet run
您的终端窗口应如下所示:
现在,您可以在网络浏览器中打开它并查看页面:
在VS Code中将其打开,然后进行自己的修改并进行尝试。
因此,现在我们将使用这个基本的Blazor应用程序并将其部署在不同的地方。
3.将其部署到Linux服务器(WebAssembly)
让我们看看将其推送到常规Linux托管服务器将需要什么。 为此,我将使用Digital Ocean 5美元的特殊服务器。 我从头开始创建它,再次显示启动和运行它所需的所有步骤。 我们将在其上运行CentOS 7。
设置我们的服务器
要进行设置,我将要对其进行更新:
sudo yum update
然后,我将在其上安装Nginx来提供我们的静态文件。
-
sudo yum install epel-release
-
sudo yum install nginx
如果您已经设置了可提供静态文件的Web服务器,则不必执行以下步骤。
然后,我将启动我们的Nginx服务器:
sudo systemctl start nginx
现在就可以开始了。
建立部署(WebAssembly)
现在我们要部署应用程序。
现在,在您的应用程序的主文件夹中打开命令提示符,然后运行以下命令:
dotnet publish -c Release -r linux-x64
我们将进入发布文件夹并查找dist文件夹:
cd bin/Release/netstandard2.1/linux-x64/publish/BlazorDemo/dist
在这里,我可以看到文件列表。
我将这些复制到我的新Linux服务器上。 我正在使用SCP,但是您可以使用任何您认为可行的方法:
scp -r * web@sillyblazordemo.jeremymorgan.com:/usr/share/nginx/html
现在,我将其加载到Web浏览器中:
好吧,那太酷了! 因此,此.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
它启动了我们的本地应用程序:
看起来很熟悉 只是现在我没有兔子头。
因此,让我们发布它。 我们将其发布为独立的应用程序,因此我们可以在我们的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上运行:
我们可以在Web浏览器中加载它!
我们现在已经启动并运行了,但是我们不想只在这样的端口上监听它,因此我们将Nginx用作反向代理。 关闭该过程。
然后让我们在后台运行此操作,最后添加“&”号:
./BlazorServerDemo --urls http://0.0.0.0:5000 &
现在,如果您输入“ jobs”,您应该会看到它正在运行。
现在,创建以下两个文件夹:
-
sudo mkdir /etc/nginx/sites-available
-
sudo mkdir /etc/nginx/sites-enabled
然后编辑您的默认文件
vi /etc/nginx/sites-available/default
并将以下内容添加到您的服务器指令中:
-
location / {
-
proxy_pass http: //localhost:5000;
-
proxy_http_version 1.1 ;
-
proxy_set_header Upgrade $http_upgrade;
-
proxy_set_header Connection keep-alive;
-
proxy_set_header Host $host;
-
proxy_cache_bypass $http_upgrade;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
proxy_set_header X-Forwarded-Proto $scheme;
-
}
现在重启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-身份验证和授权