【问题标题】:MONGO_URL for running multiple Meteor apps on one serverMONGO_URL 用于在一台服务器上运行多个 Meteor 应用程序
【发布时间】:2016-05-11 03:53:17
【问题描述】:

我的 Ubuntu 服务器 (Digital Ocean) 上运行了一个 Meteor 应用程序。我使用 Meteor Up (MUP) 来部署和保持应用程序运行。一切正常。

但是,当我尝试在同一台服务器上部署第二个应用程序时,连接到 MongoDB 时出现问题。我收到一条长且不可读的错误消息,以“调用部署过程:失败”开始,然后以

结尾
Waiting for MongoDB to initialize. (5 minutes)
connected
myapp start/running, process 25053
Waiting for 15 seconds while app is booting up
Checking is app booted or not?
myapp stop/waiting
myapp start/running, process 25114

应用程序拒绝运行。我已经尝试了很多方法来解决这个问题,如果需要更多信息,我会编辑这篇文章,但我不确定什么是相关的。基本上我不明白错误消息,所以我需要知道到底发生了什么?

编辑: 我想补充一点,如果我进入项目文件夹并使用“meteor”命令,我的应用程序运行良好。一切都按预期运行。只有当我尝试使用 MUP 将其部署为长期生产模式时,我才会收到此错误。

编辑: 我继续尝试 mupx 而不是 mup。这次我什至无法通过安装过程,我收到以下错误消息:

[Neal] x Installing MongoDB: FAILED

-----------------------------------STDERR-----------------------------------
Error response from daemon: no such id: mongodb
Error: failed to remove containers: [mongodb]
Error response from daemon: Cannot start container c2c538d34c15103d1d07bcc60b56a54bd3d23e50ae7a8e4f9f7831df0d77dc56: failed to create endpoint mongodb on network bridge: Error starting userland proxy: listen tcp 127.0.0.1:27017: bind: address already in use

但我不明白为什么! Mongod 显然已经在端口 27017 上运行,第二个应用程序应该只是向该实例添加一个新数据库,对吗?我不知道我在这里缺少什么,为什么 MUP 无法访问 MongoDB。

【问题讨论】:

    标签: javascript node.js mongodb meteor meteor-up


    【解决方案1】:

    如果没有您的 mup.json,很难看到这里发生了什么。鉴于您所说的,您的第二个应用程序部署似乎试图覆盖/引导 mongodb 超过第一个被锁定的应用程序,mongodb 环境无法启动,然后导致失败。你应该以不同的方式解决这个问题:

    • 如果您的目标是共享您的 mongoDB,请将 MONGO_URL 从您的第二个 mup.jon 指向您的第一个 mongodb 实例。它通常位于2701X 端口上。由于它是一个共享数据库,因此一个数据库中的更改可能会影响另一个数据库。
    • meteor-up 监督你的应用程序的部署,从一个很好的测试流星到 node+mongodb 环境。您可以使用以下命令生成另一个 mongod 实例: mongod --port 2701X --dbpath /your/dbpath --fork --logpath /log/path 在您的 DO 服务器上,然后将 MONGO_URL 指向那里。
    • 最后但并非最不重要的一点是,mupx 在后台拥有docker。使用mupx 进行部署应该将两个应用相互隔离。

    【讨论】:

    • 最初对于这两个应用程序,我的 mup.json 文件在“env”变量中为每个应用程序提供了一个唯一的端口,同时将 MONGO_URL 留空。我假设这两个应用程序都会在默认的 mongod 端口 27017 上创建数据库(由应用程序名称调用)。从那时起,我为第二个应用程序尝试了各种其他 MONGO_URL 值,但均未成功。我会试试 mupx!
    • PORT 变量应该对 mongod 实例没有影响,因为它只是告诉您的应用程序在哪个端口上侦听流量。如果您不确定 mongod 实例事先在您指向的 url:port 上运行,则为您的第二个应用程序设置不同的 MONGO_URL 值将不起作用。此外,设置 mongodb 可能非常棘手,尤其是 auth/replicaset/oplog 部分,所以如果你经历了这个,请检查你是否也有正确的权限。
    • 但是,mupx 应该避免所有这些:)
    • mupx 会避免这一切,因为它会自动在指定的 MONGO_URL 上运行 mongod 实例,还是因为它会自动在默认端口上处理多个数据库?
    • 因为它为您部署的每个应用程序部署在单独的 docker 环境中。见那里:github.com/arunoda/meteor-up/tree/mupx#server-setup-details
    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    相关资源
    最近更新 更多