2012-10-31 190 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「集合」選項卡並查看推送的數據。

祝你好運:)我希望這可以幫助別人!