0

我正在尝试在 Amazon AWS Ec2 微实例上运行 node.js 服务器和 Redis 服务器。

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

我使用“永远”来保持 Redis-Server 运行。它工作正常。

但是当我启动 Node server 时,它无法连接到 Redis-Server 。

它给出以下错误 -

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-server 启动时,它从 6379 端口开始。

谁能帮我解释为什么会发生这个错误以及我如何解决这个问题?

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

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

当我在 localhost 上运行代码时,一切运行良好。

4

2 回答 2

3

如果您打算在 AWS 之外使用 Redis,您可以尝试帮助我从本地 Nodejs 应用程序连接在 AWS 上工作的 Redis 服务器的后续步骤:

1) 在 AWS 上:sudo cp /etc/redis/redis.conf.backup /etc/redis/redis.conf。备份可以为您节省大量精力来找出问题所在 :)

2) 在 AWS 上:停止 redis-server: sudo /etc/init.d/redis-server stop

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

4) 在 AWS 上:启动 redis-server: sudo /etc/init.d/redis-server start

5) 在 AWS 上:输入redis-cli ping如果 redis-server 启动正常,您应该会看到PONG消息

6)在 AWS 上:现在为您正在运行的实例打开 Sequrity Group 并添加带有“类型”的新规则 - 自定义 TCP 规则,端口范围 - 6379

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

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

于 2014-05-31T17:47:15.677 回答
0

您是否使用 ping-pong 例程检查了 AWS 上的 redis 客户端-服务器连接。接下来,也许您应该尝试以 root 身份永久运行它。

于 2012-06-04T16:45:06.073 回答