2012-06-04 85 views
-1

我试图在Amazon AWS Ec2微型实例上运行node.js服务器和Redis服务器。从亚马逊AWS EC2服务器上的Node.js连接到Redis服务器时出错

我已经安装了Redis服务器,并且redis-server命令运行良好。

我使用'Forever'来保持Redis服务器运行。它工作正常。

但是当我启动我的节点服务器时,它无法连接到Redis服务器。

它提供了以下错误 -

Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 

做一个“永远的名单”显示,Redis的服务器运行良好。

info: Forever processes running 
data:  uid command script       forever pid logfile      uptime   
data: [0] _pXw node app.js       26670 26671 /home/ubuntu/.forever/_pXw.log 0:0:0:13.463  
data: [1] ylT1 node redis-server     25013 26681 

我已验证当redis服务器启动时,它始于6379端口。

任何人都可以帮我解释为什么这个错误正在发生,我怎么解决这个问题?

我使用以下代码连接到Redis。我为Redis安装了客户端库。

var redis = require("redis"), 
     client = redis.createClient(); 

当我在本地主机上运行代码时,一切正常运行。

+1

你检查使用乒乓常规AWS Redis的客户端 - 服务器连接。接下来,也许你应该尝试没有永远的运行它,作为根。 – almypal

+0

感谢almypal。我试过乒乓球测试,测试失败。接下来我以root的身份运行它,而不是永远使用测试工作。现在我的node.js应用程序也连接好。你认为这个问题永远存在吗?截至目前我的问题已解决。如果您将回复张贴为答案,我会接受。谢谢 ! –

+0

一个无关的问题。根据你的指令,我用'sudo redis-server&'在后台运行redis-server。现在我该如何停止redis服务器?发出'ps'命令不会列出redis服务器,所以我无法获得PID来杀死它。 'Fg'命令也没有效果。 –

回答

0

您是否使用ping-pong例程检查了AWS上的redis客户端 - 服务器连接。接下来,也许你应该尝试没有永远的运行它,作为根。

+0

谢谢Almypal!有效。 –

3

如果你要使用Redis的外AWS的你可以试试下面的步骤,帮助我从我的本地的NodeJS应用程序连接Redis的服务器上AWS工作:

1)在AWS:须藤CP的/ etc/redis/redis.conf.backup /etc/redis/redis.conf。备份可以节省你大量的精力搞清楚什么是错:)

2)在AWS上:停止Redis的服务器:须藤/etc/init.d/redis-server停止

3)在AWS:打开/etc/redis/redis.conf并找到一行bind 127.0.0.1。复制粘贴下面的新行bind 0.0.0.0。所以你可以有几行绑定参数。 BTW,端口的连接也可以在redis.conf中更改

4)在AWS上:启动redis-server:sudo/etc/init。d/Redis的服务器启动

5)在AWS:类型Redis的-CLI平你应该看到PONG消息,如果Redis的服务器正常启动

6)在AWS:对现在打开Sequrity集团你的跑步isntance并添加新的规则与 “类型” - 自定义TCP规则,端口范围 - 6379

7)在您的本地应用程序的NodeJS:

var redis = require("redis");
var redisClient = redis.createClient(redis_port, redis_host);

相关问题