简体   繁体   中英

Error connecting to Redis Server from Node.js on Amazon AWS EC2 server

I am trying to run a node.js server and a Redis server on an Amazon AWS Ec2 micro instance .

I have installed Redis Server and the redis-server command runs fine .

I use ' Forever ' to keep the Redis-Server running . And it works fine .

But when I start my Node server , it fails to connect to the Redis-Server .

It gives the following error -

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

Doing a 'Forever List' shows that the redis server is running fine .

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 

I have verified that when the redis-server starts , it starts at 6379 port .

Can anyone help me explain why this error is happening and how I fix this ?

I use the following code to connect to Redis . I have the client libraries installed for Redis .

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

Everything runs fine when I run the code on my localhost .

If you are going to use Redis outside of AWS you can try next steps that helped me to connect Redis Server working on AWS from my local Nodejs application:

1) On AWS: sudo cp /etc/redis/redis.conf.backup /etc/redis/redis.conf . Backup saves you a lot of energy figuring out whats wrong :)

2) On AWS: stop redis-server: sudo /etc/init.d/redis-server stop

3) On AWS: open /etc/redis/redis.conf and find a line bind 127.0.0.1 . Copy and paste new line below bind 0.0.0.0 . So you could have several lines with bind parameter. BTW, port of connection can be changed in redis.conf as well

4) On AWS: start redis-server: sudo /etc/init.d/redis-server start

5) On AWS: type redis-cli ping you should see PONG message if redis-server started ok

6) On AWS: Now open Sequrity Group for your running isntance and add New Rule with "Type" - Custom TCP Rule, Port Range - 6379

7) In your local Nodejs application:

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

Have you checked the redis client-server connection on AWS using the ping-pong routine. Next maybe you should try running it without forever, as root.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM