Я могу развернуть приложение 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
если мы получим доступ к URL «example.com/» или «example.com/helloworld.php»: тогда он будет использовать стандартную среду.
если мы получим доступ к URL ‘example.com/fileupload.php’: тогда он будет использовать гибкую среду.
Можно ли обрабатывать два условия выше?
Среды в облаке Google для каждого приложения. если вы хотите развернуть в разных средах, они должны быть отдельными приложениями или, по крайней мере, одной и той же копией на разных микросервисах. Ни одного развертывания для двух разных сред.
это для стандартной среды, но та же концепция https://cloud.google.com/appengine/docs/standard/php/microservices-on-app-engine
каждый модуль или микросервис — это приложение само по себе. потому что он управляет своими собственными ресурсами, помимо тех, которые используются совместно, например, база данных и т. д.
Да, это возможно: у вас будет одно приложение 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