部署Meteor和MongoDB到Heroku
我试图按照一个特定的指南将我的项目部署到Heroku(http://bytesofpi.com/post/20898722298/pushing-your-meteor-project-to-heroku)
其中一个步骤表明
var mongo_url = process.env.MONGOHQ_URL;
需要replaceserver / server.js中的“MONGO_URL”。
问题是我根本找不到那个variables,唯一提到这个variables的是下面的代码
// check for a valid MongoDB URL right away if (!process.env.MONGO_URL) throw new Error("MONGO_URL must be set in environment");
有没有人有这方面的经验,或知道在哪里可以find“MONGO_URL以改变它?
我会build议,而不是使用你提到的文章作为指导,你做了以下几点:
使用陨石来build立和运行您当地的Meteor项目:
https://github.com/oortcloud/meteorite
说明在该页面上。
然后使用这个buildpack:
https://github.com/oortcloud/heroku-buildpack-meteorite
再次,自述文件有如何创build你的应用程序在Heroku(一个class轮)
本自述底部的NOTE表示您需要使用支付卡validation您的Heroku帐户,以便您可以将mongohq:免费附加组件添加到您的应用程序中。 一旦validation运行:
heroku addons:add mongohq:sandbox
在Heroku上添加数据库。
然后,另一个步骤是为您设置ROOT_URL应用程序,一旦提交应用程序(仅限第一次),请在您的本地应用程序目录中input以下内容:
heroku config:set ROOT_URL=<<domain of your app>>
除非你使用自定义的名字<>会像这样
http://appname.herokuapp.com
如果你然后运行:
heroku config
你会看到MONGOHQ_URL已经和BUILDPACK_URL和ROOT_URL一起被设置了。
Oortcloud buildpack是我用过的最好的Heroku buildpack。
这就是说,Heroku是一个死胡同,因为它不支持会话亲和力。 至less,您可能能够在Heroku上运行您的应用程序,但是除非Heroku人员决定更换所有负载均衡器,否则您将无法使用多个dynos进行扩展。 仅供参考。 死路。
CloudBees看起来可能是更好的meteor主机平台… https://github.com/CloudBees-community/meteor-clickstart
我多次浏览这个标题,试图find一个将我的Meteor Mongo数据库部署到Heroku的最新解决scheme。 所以我在这里发布这个答案给所有同样的人,虽然问题是关于设置MONGO_URL。
这里是一个更新的解决scheme(meteor1.3.2.4)推送本地Meteor Mongo数据库到Heroku(免费)mLabs。 我的应用程序不使用陨石,它使用“马”buildpack。
1.做一个本地mongo db的转储
在你的应用程序文件夹中的terminal(不是mongo shell)
mongodump --port=3001 -o ../dump
2.将db文件移出“dump / your-db-name”到“dump”
在我的本地meteor实例中,/ dump文件夹被放置在我应用程序上方的文件夹中,所以“dump”与我的应用程序文件夹位于同一目录中。 “dump”包含一个以我的数据库命名的文件夹(“dump / my-database-name /”)。 这会导致下一个脚本失败,出现mongorestore错误“不知道如何处理'my-database-name'”。 为防止出现错误,请将文件夹“my-database-name”中的所有文件上移到“dump”中,然后删除“my-database-name”文件夹。
默认情况下,你的数据库名称是“meteor”,所以如果你没有改变它,请查找“dump / meteor /”。
3.在mLabs中,如果尚未这样做,请创build一个具有pipe理员权限的用户。 对我来说,在安装时分配的默认用户不起作用。
4.将你倾倒的数据库推到你的Heroku应用程序的mLabs。 假设你已经在你的Heroku应用程序中添加了mLabs插件,并在你的Heroku应用程序configuration中设置了“MONGO_URL”。 如果这些没有完成,他们必须先完成。
在terminal(而不是mongo shell),从你的应用程序的目录切换到保存“转储”目录的目录。 就我而言,这只是“cd ../”。
通过转到您的Heroku应用程序的mLabs插件,然后单击“工具”选项卡,获取您的默认“导入”脚本。 这个脚本不适合我,但它可能适用于你。 如果没有,粘贴这个脚本,用你的variablesreplace括号内的variables(也可以replace括号)。
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“集合”选项卡并查看推送的数据。
祝你好运:)我希望这可以帮助别人!
- Heroku nodejs教程无法在本地获取/冷却
- 如何部署在heroku上使用python脚本的nodejs应用程序
- Heroku:“bash:./start.sh:权限被拒绝”
- Sequelize,MySQL,并在Heroku部署的超时退出不活动
- 是否有可能部署一个Node.js应用程序到Heroku没有一个networkingdynamic?
- 在Heroku上快速应用程序崩溃的Node.js,在本地工作
- 尝试使用Express.js&Jade从MongoDB数据库删除条目
- 数据库url在MySQL工作台,但不是node.js(getaddrinfo ENOTFOUND)
- Heroku h12超时错误PG / Node.js