【问题标题】:Set up two services under same Google App Engine application (500 Error: Server Error)在同一个 Google App Engine 应用程序下设置两个服务(500 错误:服务器错误)
【发布时间】:2019-11-04 11:30:38
【问题描述】:

我目前有一个在 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:gcour deploy app app2.yaml

由于某种原因,当我尝试点击 app2-dot-app1.appspot.com/register/call 时,我得到一个 500。当我尝试点击 https://app2.app1.appspot.com/register/call 时,我得到一个“您的连接不是私人的”错误消息.

是否可以像这样在同一个应用程序中运行两个服务?我已经将它们设置为使用相同的端口,对吗?

我一直在摆弄它和谷歌搜索\拖网搜索,但我无法在任何地方找到答案。

【问题讨论】:

  • 如果请求以某种方式进入默认服务,您能否检查您的应用日志?

标签: node.js google-app-engine


【解决方案1】:

像您的情况中所述的问题偶尔会发生。如果您再次遇到此问题,您可以查看以下几点:

您遇到 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 不会为在 appspot.com 上托管的双通配符域颁发 SSL 证书。此链接提供了有关如何管理通配符映射的更全面的说明: https://cloud.google.com/appengine/docs/standard/nodejs/securing-custom-domains-with-ssl#upgrading_to_managed_ssl_certificates

另外需要指出的是,如果您在应用程序的顶层/根目录中有代码,位于服务目录之上 - 该目录中的代码可能无法被服务访问。特别是 app2.yaml 文件可能是您的问题的实际原因。它可能被解释为单一服务应用程序的 .yaml 文件。查看提供的链接以获取有关此问题的更多详细信息: Multiple Services in 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

【讨论】:

  • 非常彻底。谢谢。
【解决方案2】:

于是我今天早上来到办公室,看到一个错误:

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

昨天没有发生。所以我对我的 .yaml 文件进行了一些更改,我昨天已经进行了这些更改,以便在节点版本之间进行交换,从 10 到 12,并且页面开始工作。

同时,我在我的开发机器上升级了 npm 和 node,但没有更改我应用程序中的任何代码,除了更改 .yaml 文件。

所以,我不知道它为什么今天早上开始工作,但确实如此。

【讨论】:

    猜你喜欢
    • 2020-02-20
    • 2012-07-25
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多