如何正确设置Google App Engine的模块(PHP运行时)

时间:2016-02-14 20:23:34

标签: google-app-engine configuration module google-app-engine-php

我想为GAE(php运行时)创建非常标准的设置:2个具有特定URL的模块(路由):

  • 模块-api 用于REST API
  • module-oli 用于后端静态进程..

关于doc(https://cloud.google.com/appengine/docs/php/modules/https://cloud.google.com/appengine/docs/php/modules/routing)我创建了3个.yaml配置文件:

dispatch.yaml

application: ABC

dispatch:
- url: "*/oli/*"
  module: module-oli

- url: "*/"
  module: module-api

的app.yaml

application: ABC
version: v1
module: module-api
runtime: php55
api_version: 1

handlers:
- url: /.*
  script: public/api.php

模块oli.yaml

application: ABC
version: v1
module: module-oli
runtime: php55
api_version: 1

manual_scaling:
  instances: 1

handlers:
  - url: /.*
    script: public/oli.php

我还尝试了很多URL处理方面的更改,但我总是得到的错误是“重复模块:module-api ”。

你能帮帮我吗?提前谢谢..

1 个答案:

答案 0 :(得分:0)

我不知道为什么,但是(在我的计算机上)它只能从googleAppEngineLauncher.app( OSX 10.11.3,googleAppEngineLauncher 1.9.32版)起作用,但如果我使用命令行工具,它可以工作:

dev_appserver.py app.yaml module-oli.yaml

并且仅当我不使用param --skip_sdk_update_check(无关紧要)时

更多关于命名模块并使用默认模块或不使用)..即使我命名具有特定名称的默认模块(当然,如果没有将所有请求分派到模块,则会导致错误。

更多关于调度到模块;它有效(,因为它记录了here )。当然,它不能在本地开发环境中工作,因为每个模块都在不同的端口运行(比调度不起作用,如果有一个带有manual_scaling的模块,则_ah / start无法处理,作为err500,它停止了开始

这里是所有设置文件,以及如何运行它:

的app.yaml

application: <APPLICATION-ID>
module: default
version: v1
runtime: php55
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: blablabla.php

模块oli.yaml

application: <APPLICATION-ID>
version: v1
module: module-oli
runtime: php55
api_version: 1
threadsafe: yes

instance_class: B1

manual_scaling:
  instances: 1

handlers:
  - url: /oli/.*
    script: blebleble-oli.php

dispatch.yaml

dispatch:
  - url: "*/oli/*"
    module: module-oli

  - url: "*/*"
    module: default

在本地开发环境中运行: dev_appserver.py app.yaml module-oli.yaml ..(没有自动路由,实例在不同的端口上运行)< / p>

将所有内容部署到gcloud并更新调度(appcfg.py -A wellfedcat-1221 update_dispatch。),它的工作原理如下:

  • APPLICATION-app.spspot.com / * :默认模块提供..
  • APPLICATION-app.appspot.com/oli / * :由module-oli提供..

当您想使用我们自己的域映射到gcloud时,调度是必要的。

谢谢@Tom寻求帮助!