如何将 ABP 框架应用程序部署到 Ubuntu 服务器?

时间:2021-03-05 13:16:40

标签: ubuntu nginx blazor-webassembly abp kestrel

我正在尝试将我的 ABP 应用程序部署到 Amazon Lightsail 上的 Ubuntu 20.04 服务器。我使用带有 Blazor UIEFCorePostgreSQL 的 Abp 作为数据库,它在我的本地 Windows 机器上运行得非常好,带有 IIS Express。

我已按照 this Microsoft guide 将我的应用程序部署到 Ubuntu 服务器。由于 ASP Net Core 运行时安装在远程机器上,我将所有项目发布为依赖于框架

到目前为止,我已经设法在服务器上运行 Migrator 并使用 Dataseeder 为数据库做种。我还配置了 NginxKestrel 服务以在服务器上运行我的 HttpApi.Host 项目。 (澄清:HttpApi.Host 运行得非常好,我可以通过使用 swagger 接口获取查询结果。)
我无法实现的是运行 Blazor UI。将发布的文件复制到服务器并配置 Nginx 后,根 URL 会将我直接重定向到 swagger UI,绕过 Blazor。

我尝试从 Nginx 配置中删除 HttpApi.Host 并将 Blazor UI 设置为唯一 URL(“/”),但是只要 kestrel 服务运行,根 URL 就会自动重定向到 {{1 }}(招摇界面)。然后,我尝试停止并禁用 kestrel 服务,并希望至少能看到 index.html,但这只是 502 Bad Gateway 错误。

问题:
我基本上想在 Ubuntu 20.04 上运行我的 Blazor UI 和 HttpApi.Host。还有哪些步骤需要遵循?我查看了 original abp docs,但没有找到任何关于在 Linux 上部署的资源。

这是我的 Nginx 配置:

HttpApi.Host

这是我的 Kestrel 配置:

server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        root /home/ubuntu/myapp/Blazor;
        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;
    }
}

1 个答案:

答案 0 :(得分:0)

由于没有确切的错误消息,我建议您逐步配置您的 Linux 环境,并确保所有配置和安装都可能:

  • ASP.NET Core:在 Linux 上配置 asp.net 的大量资源,这里是一个示例 http://www.projectcodify.com/hosting-aspnet-core-on-linux-using-nginx ,然后确保您安装了最新的 ASP.NET Core 运行时< /li>
  • Blazor:部署一个简单的 Blazor Web 应用程序并确保它在服务器上运行
  • DB: 在您的简单 Blazor Web 应用程序上做一个简单的列表页面,以确保您以正确的方式配置了数据库并且它正在工作,我更愿意从外部数据库服务器或外部托管开始PostgreSQL 服务,一开始只专注于配置 web 服务器组件
  • ABP 一旦您稳定了上述 Web 应用程序,您就可以准备部署您的 ABP 应用程序并发现与 ABP 本身相关的问题