在同一个谷歌应用引擎应用程序下设置两个服务(500错误:服务器错误)



我目前有一个应用程序在谷歌应用引擎标准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

我使用:gcloud deploy app部署App1我使用:gclour deploy App2.yaml 部署App2

出于某种原因,当我尝试点击app2-dot-app1.appspot.com/register/call时,我得到了500分。当我尝试击球时https://app2.app1.appspot.com/register/call我收到一条"您的连接不是私人的"错误消息。

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

我一直在摆弄它,在谷歌上搜索,但我在任何地方都找不到答案。

类似您的情况中所述的问题偶尔会发生。如果你再次遇到这个问题,你可以看看以下几点:

你点击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

出现"您的连接不是专用的"错误消息,因为谷歌不会为appspot.com上托管的双通配符域颁发SSL证书。此链接提供了关于如何管理通配符映射的更全面的解释:https://cloud.google.com/appengine/docs/standard/nodejs/securing-custom-domains-with-ssl#upgrading_to_managed_ssl_certificates

需要指出的另一件事是,如果您在services目录上方的applicationtop/root目录中有代码,那么服务可能无法访问该目录中的代码。尤其是app2.yaml文件可能是您出现问题的实际原因。它可能被解释为单个服务应用程序的.yaml文件。有关此问题的更多详细信息,请查看提供的链接:谷歌应用引擎Python 3.7 中的多种服务

在回答你的问题时。根据应用程序层次结构,您实际上可以在一个应用程序上运行多个服务(每个应用程序最多可免费运行5个服务(。您可能想查看应用程序引擎概述以了解更多信息: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

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

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文件的更改外,我没有更改应用程序中的任何代码。

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

最新更新