2012-10-31 192 views
4

我尝试部署我的项目的Heroku以下特定指南(http://bytesofpi.com/post/20898722298/pushing-your-meteor-project-to-heroku)部署流星和MongoDB到Heroku的

的步骤之一指出

var mongo_url = process.env.MONGOHQ_URL; 

需要在服务器/ 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为了改变它

+0

这是Heroku环境提供给应用程序的一个环境变量,如process.env.PORT和process.env.HOST。因此,只需在if语句中根据需要进行更改即可使用。另外检查一个相关的问题... http://stackoverflow.com/questions/9730567/node-js-mongoose-works-locally-but-not-on-heroku – almypal

回答

14

我使用你为你做下面的指南中提到的文章会建议,而不是:

使用陨石构建和运行本地流星项目:

https://github.com/oortcloud/meteorite 

说明在该页面上。

然后用这个buildpack:

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

同样,自述有如何创建在Heroku上的应用程序(一个班轮)

在这个README底部的注意意味着你需要使用支付卡验证您的Heroku帐户,以便您可以将mongohq:​​免费附加组件添加到您的应用程序中。一旦验证运行:

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一起设置。

+0

感谢iacii保持答案更新。 – Joc

0

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

这就是说,Heroku是一个死胡同,因为它不支持会话亲和力。至少,您可能能够在Heroku上运行您的应用程序,但除非Heroku人员决定更换所有负载均衡器,否则您将无法使用多个dynos进行扩展。仅供参考。死路。

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

+0

Heroku现在支持会话亲和力。 https://blog.heroku.com/archives/2015/4/28/introducing_session_affinity – Deborah

0

我多次浏览这个标题,试图找到一个最新的解决方案,将我的本地Meteor Mongo数据库部署到Heroku。所以我在这里发布这个答案给所有同样的人,虽然问题是关于设置MONGO_URL。

这里是一个更新的解决方案(流星1.3.2.4)推送本地Meteor Mongo数据库到Heroku(免费)mLabs。我的应用程序不使用陨石,它使用“马”buildpack。

1.使本地蒙戈数据库的转储

在端子(未蒙戈外壳)在您的应用程序文件夹,

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

2.将数据库文件出了“ dump/your-db-name“up into”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中,如果您还没有这样做,请创建一个具有管理员权限的用户。对我来说,在安装时分配的默认用户不起作用。

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

在终端(不是mongo shell)中,从应用程序的目录切换到包含“dump”目录的目录。就我而言,这只是“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“集合”选项卡并查看推送的数据。

祝你好运:)我希望这可以帮助别人!