在AWS Elastic Beanstalk上部署多个使用Kestrel服务器的ASP.NET Core应用程序(Linux平台)

3
我有两个ASP.NET Core应用程序(API和UI)在Visual Studio解决方案中,想要部署到单个AWS Elastic Beanstalk上的Linux,并使用Kestrel服务器(单个URL和不同端口)。我该如何实现这一目标?

你是否可以接受使用单个 Elastic Beanstalk 部署将你的应用程序放置在不同的 URL 路径上,而不是不同的端口上? - Gabe Hollombe
寻找一个URL并使用不同的端口。 - user3057755
谢谢。是的,单个Elastic Beanstalk部署将两个应用程序放在不同的URL路径上而不是不同的端口上可以正常工作。请建议。问候, Arkay - user3057755
1个回答

6
AWS Elastic Beanstalk支持在Linux上运行多个.NET Core应用程序。Elastic Beanstalk的.NET Core on Linux文档包含一个有用的章节,介绍了打包应用程序,其中包括一个示例zip文件,其中包含两个应用程序,可以一起部署在一个Elastic Beanstalk实例上:dotnet-core-linux-multiple-apps.zip
您可以直接将dotnet-core-linux-multiple-apps.zip文件部署到Elastic Beanstalk中以查看其运行情况。有关如何将zip文件部署到Elastic Beanstalk的明确说明,请参见教程-.NET Core on Linux指南。在您的情况下,您需要上传示例dotnet-core-linux-multiple-apps.zip,而不是教程所引用的单个应用程序zip。
每个部署的应用程序将在Elastic Beanstalk应用程序服务器实例上运行,端口号定义在每个应用程序的launchSettings.json文件中。请注意,在dotnet-core-linux-multiple-apps.zip存档文件中包含的示例应用程序中,此文件不可见,因为这些应用程序在包含在zip文件之前已经使用dotnet publish命令编译过了。
告诉Elastic Beanstalk哪些路径映射到每个正在运行的应用程序的本地端口的相关配置位于platform/nginx/conf.d/elasticbeanstalk/01_custom.conf文件中,该文件位于dotnet-core-linux-multiple-apps.zip中。有关此文件包含的内容的更多信息,请参阅.NET Core on Linux 代理服务器配置文档。请注意,默认情况下,Elastic Beanstalk将/映射到端口5000,因此您只需要为其他应用程序指定附加的反向代理映射,假设其中一个应用程序配置为在默认端口5000上运行。
因此,总结一下:
  1. 通过查看每个应用程序的launchSettings.json文件,确保您知道每个应用程序将在哪个本地端口上运行。

  2. 构建您的每个.NET Core应用程序,并将它们放在一个文件夹中,您将对其进行压缩以创建部署到Elastic Beanstalk的工件。为了论证,让我们称这个文件夹为build

  3. 在您的build文件夹(示例名称,请参见上文)中创建一个platform/nginx/conf.d/elasticbeanstalk/01_custom.conf文件,其中描述如何将每个应用程序的端口映射到所需的路径。

  4. 压缩您的“build”文件夹。有关此步骤的帮助,请参阅配置应用程序源束文档

  5. 将您的源束部署到Elastic Beanstalk。有关此步骤的帮助,请参阅管理应用程序版本文档。


样例很好,但是我想知道样例仓库在哪里才能查看完整的源代码。 - Murilo Maciel Curti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接