首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js和Redis在IODocs的Heroku上

node.js和Redis在IODocs的Heroku上
EN

Stack Overflow用户
提问于 2011-12-02 00:20:27
回答 4查看 2.8K关注 0票数 0

我想让IODocs在Heroku上运行。它需要node.js和Redis。诚然,我对所有这些技术都是新手。尽管如此,我还是设法让它在本地运行。但是,在部署到Heroku时,我会收到以下错误。

代码语言:javascript
复制
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外接程序:

代码语言:javascript
复制
$ heroku config --long
NODE_ENV      => production
PATH          => bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin
REDISTOGO_URL => redis://redistogo:52847221366cb677460c306e4f482c5b@dogfish.redistogo.com:9030/

我也尝试过一些配置 建议。两者似乎都不起作用。

代码语言:javascript
复制
// 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中调试行和错误的不同,我确信这是一个配置问题。但我不知道怎么解决它。任何帮助都是非常感谢的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-15 00:30:50

这确实与Heroku上Redis的配置有关。还有其他行需要在I/O文档app.js中进行更新。

最后,我在嗅探了生产(Heroku)环境之后,在顶部(~第60行)支持了全局config对象。

代码语言:javascript
复制
if (process.env.REDISTOGOURL) {
  // use production (Heroku) redis configuration
  // overwrite config to keep it simple
  var rtg = require(‘url’).parse(process.env.REDISTOGOURL);
  config.redis.port = rtg.port;
  config.redis.host = rtg.hostname;
  config.redis.password = rtg.auth.split(“:”)[1];
}

我为安装、配置和部署I/O文档创建了一篇博客文章,其中包括这一内容以及运行I/O文档所需的其他更改。如果你对这个项目感兴趣,我建议你重新考虑一下。

感谢Jan JongboomKirsten Jones帮助我开始工作。此外,我相信这个项目已经在GitHub上更新了,包括了Heroku的配置。但是,我还没有对它进行测试。

票数 1
EN

Stack Overflow用户

发布于 2011-12-02 08:57:21

根据这一行:

代码语言:javascript
复制
2011-12-01T11:55:21+00:00 app[web.1]: Error: Redis connection to localhost:6379 failed - ECONNREFUSED, Connection refused

您正在尝试连接到localhost:6379,但是redis服务器正在redis://redistogo:52847221366cb677460c306e4f482c5b@dogfish.redistogo.com:9030/上运行。您能尝试手动连接到该URL并查看它是否有效吗?

票数 1
EN

Stack Overflow用户

发布于 2012-01-04 17:56:48

实际上,我有一篇关于如何让IODocs在Heroku上工作的博客文章。它获得了使用IODocs在Heroku上工作所需的配置更改。

多元/?P=489

下面是所需的代码更改:在“var db;”下添加以下块到app.s:

代码语言:javascript
复制
if (process.env.REDISTOGO_URL) {
   var rtg   = require("url").parse(process.env.REDISTOGO_URL);
   db = require("redis").createClient(rtg.port, rtg.hostname);
   db.auth(rtg.auth.split(":")[1]);
} else {
   db = redis.createClient(config.redis.port, config.redis.host);
   db.auth(config.redis.password);
}

然后,在读取配置文件之后,在LoadAPICon图部分中这样做:

代码语言:javascript
复制
var app = module.exports = express.createServer();
var hostname, port, password
if (process.env.REDISTOGO_URL) {
    var rtg   = require("url").parse(process.env.REDISTOGO_URL);
    hostname = rtg.hostname;
    port = rtg.port;
    password = rtg.auth.split(":")[1];
} else {
    hostname = config.redis.host;
    port = config.redis.port;
    password = config.redis.password;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8350273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档