Настройте две службы в одном приложении Google App Engine (ошибка 500: ошибка сервера) - PullRequest
0 голосов
/ 04 ноября 2019

В настоящее время у меня есть приложение, работающее в Google App Engine Standard, nodejs10, назовем это App1. Это приложение в настоящее время использует базу данных CloudSQL. Я хочу начать добавлять другие службы, использующие то же хранилище данных и экземпляр CloudSQL, поскольку все приложения работают с одними и теми же данными.

App1 в настоящее время работает и работает правильно. Очевидно, у этого есть свой собственный app.yaml, который выглядит следующим образом, это служба по умолчанию:

env: standard

resources:  
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

handlers:

  - url: /case/upsertCase
    static_dir: public
    secure: always

env_variables:

App2 имеет свой собственный файл .yaml с именем app2.yaml, и, похоже, этот сервис называется app2:

service: app2
runtime: nodejs10
env: standard

resources:  
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

handlers:

  - url: /register/call
    static_dir: public
    secure: always

Я развертываю App1 с: gcloud deploy app Я развертываю App2 с: gclour deploy app app2.yaml

По какой-то причине, когда я пытаюсь нажать app2-dot-app1.appspot.com / register / call Я получаю 500. Когда я пытаюсь нажать https://app2.app1.appspot.com/register/call, я получаю сообщение об ошибке «Ваше соединение не является частным».

Возможно ли запустить две службы втакое же приложение, как это? Я настроил их на использование одного и того же порта, это правильно?

Я возился с этим и гуглял \ тралял ТАК, но я нигде не могу найти ответ.

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Проблемы, подобные тем, которые описаны в вашей ситуации, возникают время от времени. Если вы снова столкнетесь с этой проблемой, вы можете рассмотреть следующие пункты:

Причина, по которой вы нажали 500, связана с тем, что что-то пошло не так на сервере веб-сайта, но сервер не может бытьболее конкретно о том, что именно является проблемой.

Некоторые решения этой проблемы могут включать обновление вашей веб-страницы или простое возвращение позже, чтобы получить к ней доступ снова. Также убедитесь, что вы правильно установили или обновили сертификат SSL на своей веб-странице. Ссылка ниже предоставляет более подробную информацию о таких проверках: https://cloud.google.com/appengine/docs/standard/nodejs/securing-custom-domains-with-ssl Возможно, вы захотите заглянуть в свой Stackdriver, чтобы лучше понять, почему эта ошибка возникает в первую очередь: https://cloud.google.com/error-reporting/docs/viewing-errors

Появляется сообщение об ошибке «Ваше соединение не является частным», поскольку Google не выдает SSL-сертификаты для доменов с двойным подстановочным знаком, размещенных на appspot.com. Эта ссылка дает более подробное объяснение того, как управлять сопоставлением с подстановочными знаками: https://cloud.google.com/appengine/docs/standard/nodejs/securing-custom-domains-with-ssl#upgrading_to_managed_ssl_certificates

Еще один момент, на который следует обратить внимание, если у вас есть код в каталоге top / root приложений, над каталогом services - код внутриэтот каталог может быть недоступен для служб. В частности, файл app2.yaml может быть реальной причиной ваших проблем. Возможно, он интерпретировался как файл .yaml отдельного приложения-службы. Чтобы получить более подробную информацию по этой проблеме, перейдите по ссылке: Несколько сервисов в Google App Engine Python 3.7

При ответе на ваш вопрос. Согласно иерархии приложений, вам фактически разрешено запускать несколько сервисов в одном приложении (до 5 сервисов на приложение бесплатно). Возможно, вы захотите взглянуть на обзор App Engine для получения дополнительной информации: https://cloud.google.com/appengine/docs/standard/nodejs/an-overview-of-app-engine

Фактически возможно запускать один и тот же номер порта на двух разных сервисах в одном приложении. Так как вы работаете по-разномуСлужбы в ядре приложений: в этих службах уже запущены экземпляры виртуальных машин, которые содержат разные IP-адреса. Пока IP-адреса различны, вы можете использовать одинаковый номер порта для двух служб. https://serverfault.com/questions/288850/running-two-services-on-port-80

0 голосов
/ 05 ноября 2019

Итак, я пришел в офис этим утром и увидел ошибку:

Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 10.x

, чего не было вчера. Поэтому я внес некоторые изменения в свой файл .yaml, который я уже сделал вчера, чтобы переключаться между версиями узлов, с 10 на 12, и страница начала работать.

В то же время я выполнил обновление npm и узла на моей машине для разработки, но не изменил никакого кода в моем приложении, кроме изменения в файл .yaml.

Итак, я понятия не имею, почему это сработало сегодня утром, но это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...