0

GAE (php ランタイム) の非常に標準的なセットアップを作成したい: 特定の URL を持つ 2 つのモジュール ( routings ):

  • REST API のモジュール api
  • バックエンド静的プロセスのモジュール oli ..

ドキュメントに関して ( https://cloud.google.com/appengine/docs/php/modules/およびhttps://cloud.google.com/appengine/docs/php/modules/routing ) 3 .yaml を作成しました設定ファイル:

ディスパッチ.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 処理で多くの変更を試みましたが、常に発生するエラーは「Duplicate module: module-api」です。

助けてください。前もって感謝します ..

4

1 に答える 1

0

理由はわかりませんが、(私のコンピューターでは)googleAppEngineLauncher.app(OSX 10.11.3、googleAppEngineLauncherバージョン1.9.32)からだけでは機能しませんが、コマンドラインツールを使用すると機能します:

dev_appserver.py app.yaml モジュール-oli.yaml

param --skip_sdk_update_check を使用しない場合のみ (値は関係ありません)

モジュールの命名についておよびデフォルトモジュールを使用するかどうか)..デフォルトモジュールに特定の名前を付けてもすべて機能します(もちろん、すべてのリクエストがモジュールにディスパッチされない場合はエラーが発生します)。

モジュールへのディスパッチについての詳細; それは機能します(ここに文書化されているため)。もちろん、すべての単一モジュールが異なるポートで実行されるため、ローカル開発環境では機能しません (ディスパッチが機能しないよりも、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

ディスパッチ.yaml

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

  - url: "*/*"
    module: default

ローカル開発環境で実行するには: dev_appserver.py app.yaml module-oli.yaml .. (自動ルーティングなし、インスタンスは異なるポートで実行されます)

すべてが gcloud にデプロイされ、ディスパッチが更新されます (appcfg.py -A wellfedcat-1221 update_dispatch )。次のように動作します。

  • APPLICATION-ID.appspot.com/* : デフォルト モジュールで提供されます ..
  • APPLICATION-ID.appspot.com/oli/* : module-oli によって提供されます ..

独自のドメインを使用して gcloud にマッピングする場合は、ディスパッチが必要です。

助けてくれてありがとう@トム!

于 2016-02-16T19:50:50.367 に答える