【问题标题】:Hosting multiple customer websites on Google App Engine在 Google App Engine 上托管多个客户网站
【发布时间】:2019-03-29 20:37:06
【问题描述】:

我们目前在 Kubernetes 中托管大量容器化网站,并且正在探索使用 Google App Engine 来托管这些网站,但我们无法弄清楚如何在单个 Google App Engine 帐户中托管大量(数百个)网站。

乍一看,每个网站似乎都是一个单独的项目,但后来很明显,有 20 个项目的软限制(我们最终可能会托管数百个网站),所以这似乎不正确方法。然后,我们探索了使用带有 dispatch.yaml 的单个项目在站点之间进行路由。 Dispatch.yaml 只允许十个条目,这意味着它不起作用。我们还缺少其他方法吗?我们的 dispatch.yaml 路由看起来像这样:

  - url: "example2.com/*"
    service: my-second-website

我们探索的所有选项都没有提供可扩展或可行的解决方案。任何帮助或建议将不胜感激。

【问题讨论】:

  • Kubernetes 对数百个网站更有意义。将每个网站放入一个容器中。然后你可以运行 Apache 或 Nginx 或基本上任何 Linux 网络服务器。 Kubernetes 将管理一切并自动扩展。

标签: google-app-engine


【解决方案1】:

您需要的是一个 App Engine 实例,其中包含多个服务(每个网站一个)和每个服务中的多个版本(如果需要)。

例如:

App Engine instance
    ├── website01-service
    │   ├── website01-version01
    │   ├── website01-version02
    │   └── website01-version03
    │
    └── website02-service
        ├── website02-version01
        ├── website02-version02
        └── website02-version03

这是来自Quickstart for Python 3 in the App Engine Standard Environment 文档的示例设置。

  1. Download the Hello World app 部分所述,从 git 存储库下载文件。
  2. hello_world 示例文件复制到两个不同的目录中。例如website01website02
  3. 你应该有这样的东西:
├── website01
│   ├── app.yaml
│   ├── main.py
│   ├── main_test.py
│   └── requirements.txt
└── website02
    ├── app.yaml
    ├── main.py
    ├── main_test.py
    └── requirements.txt
  1. website01/app.yaml 中添加service: website01 并在website02/app.yaml 中添加service: website02。这会将每个应用部署在不同的 App Engine 服务中。
  2. website01/main.py 中更改return 'First website!' 和在website02/main.py 中更改return 'Second website!'(这只是为了在部署后确认2 个不同的网站正在运行)。
  3. /website01 目录中执行$ gcloud app deploy --version website01-version01 并在/website02 目录中执行$ gcloud app deploy --version website02-version01
  4. 成功部署后,您应该会在 Google Cloud Console > App Engine > 服务 页面中看到 2 个不同的版本运行。
  5. 单击两个链接时,新选项卡将打开,您将看到两个不同的网站在同一个 App Engine 实例中运行,并带有两个不同的链接。链接应如下所示:
website01 -> https://website01-dot-[PROJECT_ID].appspot.com/
website02 -> https://website02-dot-[PROJECT_ID].appspot.com/

【讨论】:

    【解决方案2】:

    您是否尝试过要求提高您的项目限制?我认为这是完成这项工作的唯一好方法。

    如果您尝试超出项目限制,控制台将提示您填写申请表。当您尝试创建项目但已达到配额时会发生这种情况。该表单将要求您指定所需的其他项目数量,以及它们对应的电子邮件帐户、计费帐户和预期用途。

    https://support.google.com/cloud/answer/6330231?hl=en

    可以使用单个项目和单个 service/app.yaml 执行此操作,如果您可以接受每个网站的 url 类似于:

    1. www.website1.com/website1/
    2. www.website2.com/website2/
    3. www.website3.com/website3/

    然后您可以使用app.yaml 中的handlers 来进行路由(如果有人尝试访问www.website1.com/website2/,请使用一些轻型服务器代码来重定向)。这样做的最大问题是每次部署时都会部署所有 100 个站点。

    【讨论】:

      猜你喜欢
      • 2010-10-19
      • 1970-01-01
      • 2020-09-05
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多