Развертывание php-приложений облачной платформы Google с использованием обеих сред (Standard & Flexible) - PullRequest
0 голосов
/ 15 ноября 2018

Я могу развернуть приложение php в облаке Google, настроив app.yaml для стандартной и гибкой сред отдельно.

'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. Стандартсреда для URL-адреса helloworld.php
2. Гибкая среда для URL-адреса файла fileUpload.php

, поэтому, пожалуйста, предложите мне структуру этого приложения.
Заранее спасибо

Я пробовал с приведенной ниже структурой, но она не работает ..

|-dispatch.yaml<br>
|-standard<br>
  |-app.yaml<br>
  |-helloworld.php<br>
|-flexible<br>
  |-app.yaml<br>
  |-fileUpload.php<br>

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': тогда он будет использовать гибкую среду.

возможно ли обрабатывать два условия выше?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Среды в облаке Google для каждого приложения. если вы хотите развернуть их в разных средах, они должны быть отдельными приложениями или, как минимум, одной и той же копией на разных микросервисах Ни одного развертывания для двух разных сред.

это для стандартной среды, но та же концепция https://cloud.google.com/appengine/docs/standard/php/microservices-on-app-engine каждый модуль или микросервис - это приложение само по себе. потому что он управляет своими собственными ресурсами, помимо общих, например, база данных и т. д.

0 голосов
/ 15 ноября 2018

Да, это возможно: у вас будет одно приложение GAE (т.е. один проект GCP) с двумя службами, одним стандартным и одним гибким.Вы в значительной степени начали в этом направлении, но вы упустили несколько вещей.

Время выполнения неверно, и вам не хватает служебного имени (не по умолчанию) flex-module app.yaml.Из Общие настройки :

время выполнения: php

Эта настройка обязательна.Это имя среды выполнения App Engine, используемой этим приложением.Чтобы указать PHP, используйте php .Другие среды выполнения доступны;за дополнительной информацией обращайтесь к документации на каждом языке.

service: service_name

Требуется при создании службы.Необязательно для сервиса по умолчанию.Каждый сервис и каждая версия должны иметь имя.Имя может содержать цифры, буквы и дефисы.Он не может быть длиннее 63 символов и не может начинаться или заканчиваться дефисом.Выберите уникальное имя для каждой услуги и каждой версии.Не используйте имена между сервисами и версиями.

Вы также можете сбросить стандартные конфиги env в этом файле - в настоящее время они игнорируются, но на случай, если проверка станет большестрого по дороге).Может быть, посмотрите как-то связанный Как узнать, относится ли страница документации Google App Engine к стандартной или гибкой среде

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

Вы должны проверить Runtime_config раздел также, кажется, является обязательным, но я не пользователь PHP, я не знаю, что предложить здесь:

Вы должны настроить document_root в разделе runtime_config, например, в приведенном выше примере.

Вы должны быть осторожны с содержанием 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
...