Развертывание php-приложений облачной платформы Google с использованием обеих сред (стандартная и гибкая)

Я могу развернуть приложение 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
| -стандарт
| -app.yaml
| -helloworld.php
| Гибкая
| -app.yaml
| -fileUpload.php

код отправки: 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

Решение

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

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

1

Другие решения

Да, это возможно: у вас будет одно приложение 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
0

По вопросам рекламы [email protected]