【问题标题】:Deploying Meteor and MongoDB to Heroku将 Meteor 和 MongoDB 部署到 Heroku
【发布时间】:2012-10-20 15:18:29
【问题描述】:

我正在尝试按照特定指南将我的项目部署到 Heroku (http://bytesofpi.com/post/20898722298/pushing-your-meteor-project-to-heroku)

其中一个步骤表明

var mongo_url = process.env.MONGOHQ_URL;

需要替换 server/server.js 中的“MONGO_URL”。

问题是我根本找不到那个变量,唯一提到那个变量的是下面的代码

    // check for a valid MongoDB URL right away
    if (!process.env.MONGO_URL)
         throw new Error("MONGO_URL must be set in environment");

有没有人有这方面的经验,或者知道在哪里可以找到“MONGO_URL 以更改它?

【问题讨论】:

  • Heroku 环境提供给应用程序使用的环境变量,如 process.env.PORT 和 process.env.HOST。因此,只需根据 if 语句中的要求更改它,它应该可以工作。另请检查相关问题...stackoverflow.com/questions/9730567/…

标签: node.js mongodb heroku meteor


【解决方案1】:

我多次浏览这个标题,试图找到一个最新的解决方案,将我的本地 Meteor Mongo db 部署到 Heroku。所以我在这里为任何做同样事情的人发布这个答案,尽管问题实际上是关于设置 MONGO_URL。

这是一个更新的解决方案(Meteor 1.3.2.4),用于使用(免费)mLabs 将本地 Meteor Mongo 数据库推送到 Heroku。我的应用没有使用陨石,而是使用了“马”构建包。

1.转储您的本地 mongo db

在您的应用文件夹中的终端(不是 mongo shell)中,

mongodump --port=3001 -o ../dump

2。将 db 文件从“dump/your-db-name”移到“dump”

在我的本地流星实例中,/dump 文件夹位于我的应用程序上方的文件夹中,因此“dump”与我的应用程序文件夹位于同一目录中。 “dump”包含一个以我的数据库命名的文件夹(“dump/my-database-name/”)。这会导致下一个脚本失败,并出现 mongorestore 错误“不知道如何处理 'my-database-name'”。为防止出现错误,请将文件夹“my-database-name”中的所有文件移至“dump”,然后删除“my-database-name”文件夹。

默认情况下,您的数据库名称是“meteor”,所以如果您没有更改它,请查找“dump/meteor/”。

3.在 mLabs 中,如果您还没有这样做,请创建一个具有管理员权限的用户。 对我来说,设置时分配的默认用户不起作用。

4.将转储的数据库推送到 Heroku 应用程序的 mLabs。 这假设您已在 Heroku 应用程序中添加了 mLabs 插件,并已在 Heroku 应用程序配置中设置了“MONGO_URL”。如果这些没有完成,就必须先完成。

在终端(不是 mongo shell)中,从您的应用程序目录更改为包含“转储”目录的目录。就我而言,它只是“cd ../”。

转到 Heroku 应用的 mLabs 插件,然后单击“工具”选项卡,获取默认的“导入”脚本。这个脚本对我不起作用,但它可能对你有用。如果不是,请粘贴此脚本,用您的变量替换括号中的变量(也替换括号)。

mongorestore -h [your mLabs value]  -d [your mLabs default user name] -u [your mLabs created user name] -p [your mLabs created user's password]

脚本运行后,您应该能够刷新您的 mLabs“集合”选项卡并查看您推送的数据。

祝你好运 :) 我希望这对某人有所帮助!

【讨论】:

    【解决方案2】:

    Oortcloud buildpack 是我用过的最好的 Heroku buildpack。

    话虽如此,Heroku 是一个死胡同,因为它不支持会话亲和性。至少,您可能能够在 Heroku 上启动并运行您的应用程序,但您永远无法使用多个 dyno 对其进行扩展,除非 Heroku 人员决定更换所有负载均衡器。供参考。死胡同。

    CloudBees 看起来可能是更好的 Meteor 托管平台... https://github.com/CloudBees-community/meteor-clickstart

    【讨论】:

    【解决方案3】:

    我建议您不要使用您提到的文章作为指南,而是执行以下操作:

    使用 Meteorite 构建和运行您的本地 Meteor 项目:

    https://github.com/oortcloud/meteorite
    

    说明在那个页面上。

    然后使用这个 buildpack:

    https://github.com/oortcloud/heroku-buildpack-meteorite
    

    自述文件再次说明了如何在 Heroku(单行)上创建您的应用

    本自述文件底部的注释意味着您需要使用支付卡验证您的 Heroku 帐户,以便您可以将 mongohq:free 插件添加到您的应用程序中。一旦验证运行:

    heroku addons:add mongohq:sandbox
    

    在 Heroku 上添加数据库。

    然后另一个步骤是为您的应用设置 ROOT_URL,在应用提交后(仅第一次)在您的本地应用目录中键入:

    heroku config:set ROOT_URL=<<domain of your app>>
    

    除非您使用自定义名称 将类似于

    http://appname.herokuapp.com
    

    如果你随后运行:

    heroku config
    

    您会看到 MONGOHQ_URL 已与 BUILDPACK_URL 和 ROOT_URL 一起设置。

    【讨论】:

    • 感谢 iacii 及时更新答案。
    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 2021-06-22
    • 2014-09-24
    • 2016-05-15
    • 2017-01-19
    • 2015-09-09
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多