我試圖讓IODocs在Heroku上運行。它需要node.js和Redis。無可否認,我是所有這些技術的新手。儘管如此,我已經設法讓它在本地運行。但是,在部署到Heroku時收到以下錯誤。node.js和Redis在Heroku中用於IODocs
2011-12-01T11:55:18+00:00 app[web.1]: Redis To Go - port: 9030 hostname: dogfish.redistogo.com
2011-12-01T11:55:18+00:00 app[web.1]: Express server listening on port 9694
2011-12-01T11:55:19+00:00 heroku[web.1]: State changed from starting to up
2011-12-01T11:55:21+00:00 app[web.1]: ^
2011-12-01T11:55:21+00:00 app[web.1]: Error: Redis connection to localhost:6379 failed - ECONNREFUSED, Connection refused
2011-12-01T11:55:21+00:00 app[web.1]: at Socket.<anonymous> (/app/node_modules/redis/index.js:123:28)
2011-12-01T11:55:21+00:00 app[web.1]: at Socket.emit (events.js:64:17)
2011-12-01T11:55:21+00:00 app[web.1]: at Array.<anonymous> (net.js:828:27)
2011-12-01T11:55:21+00:00 app[web.1]: at EventEmitter._tickCallback (node.js:126:26)
2011-12-01T11:55:23+00:00 heroku[web.1]: State changed from up to crashed
我在本地交配時唯一收到類似警告的時候是Redis沒有運行。從我可以告訴Redis的添加爲我的應用程序和運行已啓用:
$ heroku config --long
NODE_ENV => production
PATH => bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin
REDISTOGO_URL => redis://redistogo:[email protected]:9030/
我也嘗試了一些configurationsuggestions。這兩者似乎都不起作用。
// redis connection in app.js
var db;
if (process.env.REDISTOGO_URL) {
var rtg = require("url").parse(process.env.REDISTOGO_URL);
// tried this line as well... gave a different error on .connect();
// db = require('redis-url').connect(process.env.REDISTOGO_URL);
db = redis.createClient(rtg.port, rtg.hostname);
db.auth(rtg.auth.split(":")[1]);
// debug
sys.puts('Redis To Go - port: ' + rtg.port + ' hostname: ' + rtg.hostname);
} else {
db = redis.createClient(config.redis.port, config.redis.host);
db.auth(config.redis.password);
}
從我Redis的區別To Go的調試線和錯誤,我敢肯定,這是一個配置問題。但不知道如何解決它。任何幫助是極大的讚賞。
我給它一個鏡頭。這很奇怪,因爲我的* Redis To Go *調試行顯示了正確的配置,並且位於同一個塊中。 –
這是一個超級先進的技巧。在[Cloud9 IDE](http://c9.io)中打開它(可以通過Git repo來做到這一點),以便實際上可以將調試器放在它上面並檢查變量。在這種情況下節省大量時間。您現在仍然可以連接到與您的連接相同的Redis實例。 –
我會檢查一下。問題是我目前還不知道這些技術。儘管我可以確定問題,但我甚至不知道如何編寫代碼來連接到Redis。 –