【问题标题】:Google cloud platform php application deployment using both environments(Standard & Flexible)使用两种环境的谷歌云平台 php 应用程序部署(标准和灵活)
【发布时间】:2019-04-18 08:20:36
【问题描述】:

我可以通过分别为标准和灵活环境配置 app.yaml 在谷歌云中部署 php 应用程序。

'app.yaml' 对于标准环境:

 runtime: php55
 api_version: 1
 threadsafe: true

 handlers:
  - url: /.*
  script: helloworld.php

  - url: /fileUpload.php
  script: fileUpload.php

'app.yaml' 对于柔性环境:

 runtime: php55
 env: flex  # flexible env
 api_version: 1
 threadsafe: true

 handlers:
  - url: /.*
  script: helloworld.php

  - url: /fileUpload.php
  script: fileUpload.php

现在我想在单个应用程序中同时使用这两种环境。

1. helloworld.php URL 的标准环境
2.fileUpload.php的URL的灵活环境

所以请建议我这个应用程序的结构。
提前致谢

我尝试了以下结构,但它不起作用..

|-dispatch.yaml
|-标准
|-app.yaml
|-helloworld.php
|-灵活
|-app.yaml
|-fileUpload.php

dispatch.yaml 代码:

dispatch:
- url: "*/fileupload/*"
  service: flex-module
- url: "/.*"
  service: default

如何在单个应用程序中同时利用标准环境和灵活环境?

示例:
域:example.com

  1. 如果我们访问 url 'example.com/' 或 'example.com/helloworld.php' :那么它将使用标准环境。

  2. 如果我们访问 url 'example.com/fileupload.php' : 那么它将使用柔性环境。

是否可以处理以上两种情况?

【问题讨论】:

  • 感谢@Mangu 的回复,它只是一个应用程序,不是两个子应用程序。示例:域:example.com 1. 如果我们访问 url 'example.com/' 或 'example.com/helloworld.php' :那么它将使用标准环境。 2. 如果我们访问 url 'example.com/fileupload.php' : 那么它将使用柔性环境。是否有可能处理以上两个条件?

标签: php google-app-engine google-cloud-platform yaml app-engine-flexible


【解决方案1】:

谷歌云上的环境是每个应用程序。如果你想在不同的环境中部署它们,它们必须是独立的应用程序,或者至少是不同微服务上的相同副本。不是针对两种不同环境的单一部署。

这适用于标准环境,但概念相同https://cloud.google.com/appengine/docs/standard/php/microservices-on-app-engine 每个模块或微服务本身就是一个应用程序。因为除了数据库等共享的资源之外,它还管理自己的资源。

【讨论】:

    【解决方案2】:

    是的,这是可能的:您将拥有一个 GAE 应用程序(即一个 GCP 项目),其中包含 2 个服务、一个标准和一个 flex。您几乎是朝这个方向开始的,但是您错过了一些事情。

    运行时不正确,您缺少(非默认)flex-moduleapp.yaml 的服务命名。来自General settings

    运行时:php

    此设置是必需的。它是 App Engine 语言的名称 此应用程序使用的运行时。要指定 PHP,请使用 php。其他 运行时可用;请参阅每种语言的文档 更多信息。

    服务:服务名称

    创建服务时需要。对于默认服务是可选的。每个 服务,并且每个版本都必须有一个名称。名称可以包含数字, 字母和连字符。它不能超过 63 个字符,并且 不能以连字符开头或结尾。为每个人选择一个唯一的名称 服务和每个版本。不要在服务和服务之间重用名称 版本。

    您也可以在此文件中删除standard env configs - 它们目前被忽略,但以防万一检查变得更加严格)。也许偷看某种相关的How to tell if a Google App Engine documentation page applies to the standard or the flexible environment

     runtime: php
     env: flex  # flexible env
     service: flex-module
    

    你也应该检查The runtime_config部分,这似乎是强制性的,但我不是PHP用户,我不知道这里有什么建议:

    您必须在runtime_config 部分配置document_root, 比如上面的例子。

    您需要小心您的dispatch.yaml 内容。 flex 服务的模式与您为该服务选择的 URL 不匹配,它需要匹配。您还可以在最后删除默认服务模式 - 任何不匹配指定路由模式的内容都会转到默认服务。

    dispatch:
      - url: "*/fileUpload.php"
        service: flex-module
    

    注意:我一直在 dispatch.yaml 中使用目录模式 - 即 - url: "*/some_dir/*" - 绝不只是特定文件,我不能 100% 确定上述方法是否有效,可能需要一些如果没有,请调整。

    在默认服务的app.yaml 中,您可以删除用于上传的处理程序——这将由flex-module 处理。只是化妆品。

    还要注意部署 - 您有 3 个可部署项:2 个服务(通过部署相应的 app.yaml 文件进行部署)和必须专门部署的 dispatch.yaml 文件。 3 个.yaml 文件的任意组合都可以包含在一个部署命令中(但这只是为了方便,实际上每个文件都是单独部署的):

    gcloud app deploy standard/app.yaml flexible/app.yaml dispatch.yaml
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2020-03-09
    • 2014-11-21
    • 1970-01-01
    • 2020-06-17
    相关资源
    最近更新 更多