65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Linux 上托管 ASP.NET Core

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.75/5 (5投票s)

2018年2月2日

CPOL

5分钟阅读

viewsIcon

41513

有关如何在 Linux 上托管 ASP.NET Core 的分步说明。

引言

本文提供了在 Ubuntu 16.04(一种 Linux 发行版)上托管 ASP.NET Core 2 的分步说明。

背景

随着越来越多的开发人员使用 Java、PHP、MySQL、Apache 和 Linux 等开源软件来开发 Web 应用程序,ASP.NET 的受欢迎程度在某些领域有所下降。例如,与几年前相比,中国现在的 ASP.NET 开发人员少了很多。随着越来越多的 ASP.NET 程序员转向 Java 和 PHP,在中国很难找到合格的 ASP.NET 程序员。其中一个原因是,与开源平台相比,使用 ASP.NET 作为 Web 开发平台的成本更高。开源软件都是免费的。Visual Studio 除社区版外均不免费。通过 ASP.NET 开发的 Web 应用只能在 Windows Server 上的 IIS 上托管。数据库很可能是 SQL Server。Windows Server 和 SQL Server 非常昂贵。另一个原因是,许多开发人员不想将自己锁定在单一供应商中,并且没有自由选择其他工具和平台。ASP.NET 开发人员仅限于使用 Microsoft 产品,如 Visual Studio、Windows 和 SQL Server。
 
为了与其他开源软件竞争或成为开源社区的一部分,Microsoft 推出了一个名为 ASP.NET Core 的新 Web 开发框架。它是一个跨平台开源框架。ASP.NET Core 有潜力吸引更多开发人员,因为它可以在 Windows、macOS 和 Linux 上构建和运行 Web 应用程序。ASP.NET 具有许多富有成效的功能。许多开发人员认为 C# 是一种比 Java 更先进的现代编程语言。许多开发人员认为 Visual Studio 是最好的 IDE 软件。

如何在 Linux 上托管 ASP.NET Core 的说明

在 Azure 中预配 Ubuntu 服务器
 
1. 登录到 Azure 门户。

2. 从左侧菜单中选择“新建”。在“搜索”文本框中,键入 Ubuntu。在搜索结果窗格中,选择 Ubuntu Server 16.04 LTS。
 
3. 选择“资源管理器”作为部署模型,然后单击“创建”按钮。
 
4. 在接下来的几个窗格中,使用所需的参数配置 VM。选择“密码”作为身份验证类型。
 
5. 在最后一个窗格中单击“创建”按钮以创建 VM。
 
6. 打开新 Ubuntu VM 的“网络安全组”窗格,转到“入站安全规则”窗格,添加一个入站安全规则以打开 RDP 端口 3389,以便从 Windows 计算机进行远程桌面连接。添加另一个入站安全规则以打开 HTTP 端口 80,以便访问托管在此 VM 上的网站。请注意,默认情况下,Azure 只为这个新创建的 VM 打开 SSH 端口 22。
 
在 Ubuntu 服务器上安装相关软件包
 
 
1. 在 Windows 计算机上安装 Git for Windows 软件包。此程序包中的 Git Bash 工具用于连接到 Linux VM 并执行 Linux shell 命令。Visual Studio 2017 安装可能已包含 Git for Windows。也可以使用支持 SSH 网络协议的其他终端模拟器,如 PuTTY。
 
2. 打开 Git Bash。通过 SSH 连接到 Ubuntu VM。
 
ssh {user name}@{ip address}
 
3. 更新软件程序包索引。
 
sudo apt-get update
 
4. 安装轻量级 xfce4 桌面程序包。
 
sudo apt-get install xfce4
 
5. 安装 RDP 服务器。
 
sudo apt-get install xrdp
 
6. 安装 FireFox Web 浏览器用于 ASP.NET Core Web 应用测试。
 
sudo apt-get install firefox
 
7. 通过 Windows 上的远程桌面连接连接到 Ubuntu 服务器。确保图形用户界面正常工作,并且 FireFox Web 浏览器正常工作。
 
在 Ubuntu Server 16.04 LTS 上安装 ASP.NET Core 2.1.3
 
 
1. 将 Microsoft 产品密钥注册为受信任的。
 
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg


sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
 
2. 设置所需的版本托管程序包源。
 
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
 
3. 更新软件程序包索引。
 
sudo apt-get update
 
4. 安装 .NET Core。
 
sudo apt-get install dotnet-sdk-2.1.3
 
5. 运行 dotnet version 命令以证明安装成功。
 
dotnet --version
 
创建 ASP.NET Core MVC 测试应用
 
1. 创建一个 ASP.NET Core MVC Web 应用。
 
dotnet new mvc --name FirstMvc
 
2. 构建并运行 Web 应用。
 
cd FirstMvc


dotnet restore


dotnet run
 
3. 测试 ASP.NET Core Web 应用。远程桌面到 Ubuntu 服务器,启动 FireFox。转到地址 https://:5000。确保 Web 应用正常工作。
 
安装和配置 Nginx
 
 
尽管运行在 Web 服务器 Kestrel 上的 ASP.NET Core Web 应用可以本地运行,但目前无法从外部访问。本节提供了安装 Web 服务器 Nginx 并将其配置为反向代理服务器以将请求转发到 Kestrel 的说明,以便 Web 应用可以通过 HTTP 端口 80 从外部访问。
 
1. 安装 Web 服务器 Nginx。
 
sudo apt-get install nginx
 
2. 启动 Nginx 服务。
 
sudo service nginx start
 
3. 通过在 Windows 计算机上浏览到服务器的默认 Web 地址 http://{ubuntu server ip addesss} 来验证 Nginx 是否安装成功。
 
4. 将 Nginx 配置为反向代理服务器。使用具有 sudo 权限的文本编辑器(如 vi)打开文件 /etc/nginx/sites-available/default。
 
sudo vi /etc/nginx/sites-available/default
 
在 server 部分中,找到 location 部分。在 location 部分中添加以下行。
 
        proxy_pass https://:5000;
 
确保以下行被注释掉。
 
               #try_files $uri $uri/ =404;
 
更改后,配置文件中的 server 部分如下所示。
 
server {

    # Some configurations.

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                #try_files $uri $uri/ =404;
                # Configure reverse proxy server
                proxy_pass https://:5000;
        }

    # Some other configurations.
}
 
保存更改。
 
运行以下命令验证配置文件语法是否正确。
 
sudo nginx -t
 
运行以下命令重新加载 Nginx 服务以应用更改。
 
sudo nginx -s reload
 
5. 转到刚刚创建的 ASP.NET Core MVC Web 应用项目的根文件夹,发布一个发布版本。
 
dotnet publish --configuration Release
 
命令输出指示了发布位置。
 
6. 转到已发布的文件夹,运行 Web 应用。
 
dotnet FirstMvc.dll
 
7. 通过在 Ubuntu VM 内部和另一台外部计算机上浏览 Web 应用来测试 Web 应用。
 
© . All rights reserved.