3

我正在 Google App Engine 上创建一个离线优先应用程序,将 PouchDB 作为我的本地数据库,将 CouchDB 作为我的远程数据库。我在 Google AppEngine 上启用了 CouchDB,并尝试访问以下 URL:

https://[my-app-id].appspot.com:5984/_utils/

当我这样做时,我得到以下信息:

This site can’t be reached
The connection was reset.
Try:
Checking the connection
Checking the proxy and the firewall
Running Windows Network Diagnostics
ERR_CONNECTION_RESET

所以我尝试https在防火墙设置中启用访问。

**Firewalls**
[ ] Allow HTTP traffic
[Y] Allow HTTPS traffic

仍然收到上面的错误。

我搜索了文档,但找不到有关如何在 Google AppEngine 上访问 Fauxton(或 Futon)的任何有用信息。(说明仅告诉您如何在本地计算机上访问 Fauxton。)

我已经生成了一个私钥和公钥,并通过命令行登录到服务器

我还按照有关配置防火墙以允许远程访问的说明进行操作,并且仅将其提供给我的 PC。

这些都没有使我能够访问https://[my-app-id].appspot.com:5984/_utils/

如何在 Google AppEngine 平台上访问 Fauxton?


更新:根据我浏览器中的开发工具,我的 PouchDB 应用程序已经成功创建了一个要同步的数据库,但它不在服务器上:

应用程序选项卡中 IndexedDB 的屏幕截图

app.yaml 文件

application: [app-name]
version: 4
runtime: python27
api_version: 1
threadsafe: false

handlers:

- url: /
  script: main.py

- url: /(favicon)\.ico$
  static_files: \1.ico
  upload: /(favicon)\.ico
  application_readable: true

- url: /(package)\.json$
  static_files: \1.json
  upload: /(package)\.json
  application_readable: true

  # Serve images as static resources #
- url: /(.+\.(gif|png|jpg|json|ico))$
  static_files: \1
  upload: .+\.(gif|png|jpg|json|ico)$
  application_readable: true


- url: /index.html
  static_files: index.html
  upload: index.html 

- url: /licence.html
  static_files: licence.html
  upload: licence.html 

- url: /privacy.html
  static_files: privacy.html
  upload: privacy.html 

- url: /pouchnotes.manifest
  static_files: pouchnotes.manifest
  upload: pouchnotes.manifest  

- url: /manifest.json
  static_files: manifest.json
  upload: manifest.json

  # static directories #

- url: /img
  static_dir: img

- url: /js
  static_dir: js

- url: /css
  static_dir: css


libraries:
- name: webapp2
  version: "2.5.2"

编辑我在 Bitnami 社区论坛上发布了这个问题(他们在 Google App Engine 上提供 CouchDB)

4

2 回答 2

1

从 Bitnami 社区论坛获得了一些帮助

到目前为止的答案...

(1)设置防火墙规则——确保你有一个永久的 IP 地址

(2) 设置SSH密钥通过命令行访问服务器

(3)sudo /opt/bitnami/couchdb/scripts/ctl.sh stop couchdb

(4)编辑local.ini指向0.0.0.0而不是127.0.0.1- 但请注意,您需要输入cd /opt/bitnami/couchdb/etc/,按回车,然后sudo vi local.ini(而不是vi local.ini按照说明建议)。

(5)登录外部IP地址。(以身份登录admin并使用前缀命令sudo

(注意:您不需要在 GAE 柔性环境中运行它)

于 2017-11-20T14:25:05.560 回答
1

FWIW,您帖子中的一个引用指向 Google Compute Engine (GCE),它是一个 IaaS,而不是像 Google App Engine (GAE) 这样的 PaaS,您可能正在寻找错误的产品。

app.yaml文件表明您正在使用标准环境,该环境不提供配置侦听端口的方法。而且它也不允许监听套接字。从限制和限制

尽管 App Engine 支持套接字,但在使用套接字时需要注意某些限制和行为:

  • 您不能创建侦听套接字;您只能创建出站套接字。

GAE 灵活环境可能是一种替代方案,因为它放弃了许多标准环境限制,但它是一个截然不同的解决方案(我还没有使用过)。答案的其余部分假设灵活的环境,并且仅基于文档。

不是 100% 确定,但您可能需要教您的应用程序改为侦听端口 8080。从侦听端口 8080

App Engine 前端会将传入请求路由到端口 8080 上的相应模块。您必须确保您的应用程序代码正在侦听 8080。

除非您可以使用forwarded ports网络配置(同样,不是 100% 确定,我没有使用 flex env)。从端口转发

端口转发允许直接连接到实例上的 Docker 容器。此流量可以通过任何协议传输。端口转发旨在帮助您解决可能需要附加调试器或分析器的情况。

默认情况下,来自网络外部的传入流量不允许通过Google Cloud Platform 防火墙。在文件中指定端口转发后app.yaml,您必须添加防火墙规则以允许来自您要打开的端口的流量。

您可以在Google Cloud Platform Console的 Networking Firewall Rules 页面或使用gcloud 命令指定防火墙规则。

例如,如果您想从端口转发 TCP 流量2222

  1. 修改app.yaml包括:

    entrypoint: gunicorn -b :$PORT -b :2222 main:app
    
  2. 在您的网络设置中app.yaml,包括:

    network:
      forwarded_ports:
       - 2222/tcp
    
  3. 在Cloud Platform Console中指定防火墙规则,或使用gcloud compute firewall-rules create以允许来自任何来源 ( 0.0.0.0/0) 和来自 的流量tcp:2222

于 2017-11-17T14:19:05.367 回答