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

标签 ubuntu nginx blazor-webassembly abp kestrel

我正在尝试将我的 ABP 应用程序部署到 Amazon Lightsail 上的 Ubuntu 20.04 服务器。我将 Abp 与 一起使用Blazor 用户界面 , EFCore , 和 PostgreSQL 作为 DB,它在我的本地 Windows 机器上使用 IIS Express 运行得非常好。
我关注了this Microsoft guide将我的应用程序部署到 Ubuntu服务器 .由于远程计算机上安装了 ASP Net Core 运行时,我将所有项目发布为 依赖于框架 .
到目前为止,我已经设法在服务器上运行 Migrator 并使用 Dataseeder 为数据库播种。我还配置了 Nginx 红隼 运行我的 HttpApi.Host 的服务服务器上的项目。 (澄清一下:HttpApi.Host 运行得非常好,我可以使用 swagger 接口(interface)返回查询结果。)
我无法实现的是运行 Blazor UI。将发布的文件复制到服务器并配置 Nginx 后,根 URL 会绕过 Blazor 将我直接重定向到 swagger UI。
我试图删除 HttpApi.Host从 Nginx 配置中并将 Blazor UI 设置为唯一的 URL(“/”),但只要 kestrel 服务运行,根 URL 就会自动重定向到 HttpApi.Host (招摇界面)。然后,我尝试停止并禁用 kestrel 服务,并希望至少能看到 index.html,但这只会让我收到 502 Bad Gateway 错误。
问题:
我基本上想在 Ubuntu 20.04 上运行我的 Blazor UI 和 HttpApi.Host。还有哪些其他步骤可以遵循?我查了original abp docs但没有找到任何关于在 Linux 上部署的资源。
这是我的 Nginx 配置:

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;
    }
}
这是我的 Kestrel 配置:
[Unit]
Description=HttpApiHost .NET Web API App running on Ubuntu

[Service]
WorkingDirectory=/home/ubuntu/myapp/MyAppApi
ExecStart=/usr/bin/dotnet /home/ubuntu/myapp/MyAppApi/MyApp.HttpApi.Host.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=http-api-host-syslog
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

最佳答案

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

  • ASP.NET 核心:在Linux上配置asp.net的资源很多,这里有一个例子http://www.projectcodify.com/hosting-aspnet-core-on-linux-using-nginx , 然后确保您安装了最新的 ASP.NET Core 运行时
  • 布雷泽:部署一个简单的 Blazor Web 应用程序并确保它在服务器上运行
  • 数据库:在您的简单 Blazor Web 应用程序上创建一个简单的列表页面,以确保您以正确的方式配置数据库并且它正在工作,我更愿意从外部数据库服务器或外部托管 PostgreSQL 服务开始,只专注于配置 Web 服务器组件开始
  • 总部基地 一旦您稳定了上述 Web 应用程序,您就可以部署您的 ABP 应用程序并发现与 ABP 本身相关的问题
  • 关于ubuntu - 如何将 ABP 框架应用程序部署到 Ubuntu 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66493284/

    相关文章:

    linux - sshd_config 编辑后 ssh 连接被拒绝

    python - pd.DataFrame.to_sql(method ="multi") GCP Postgres 引发 struct.error 'h' 格式需要 -32768 <= number <= 32767 和用户定义的 dtypes

    python - Django 调试工具栏不出现

    blazor - 将 Blazor Webassembly 项目包含到现有 ASP.NET Core 项目中

    c - Ubuntu 12.4 上的报警系统调用

    ubuntu - 在 Ansible 中比较 Ubuntu 主要和次要版本

    nginx - 当原点关闭时在重试之间添加延迟(Nginx,502)

    python - Virtualenv:如何使自定义 Python 包含由 uWSGI 托管的多组件共享

    binding - blazor 中的绑定(bind)延迟了 1 步

    blazor-server-side - .NET MAUI Blazor - 将哪些内容纳入其中,Blazor 服务器还是 Blazor WASM 作为最佳实践?