外网连接云服务器的redis出现的问题

2019/7/23 9:51:52 人评论 次浏览 分类:学习教程

第一次接触redis,由于考虑到后续可能项目部署到云服务器上,就直接把redis部署到腾讯云上了。

本地java代码连接它,就要考虑端口开发的问题。

 

在云服务器上检测一下开放的端口:

firewall-cmd --list-ports

我们再进行端口查询 firewall-cmd --list-ports 发现为空,我们来开放端口

提示防火墙未运行 FirewallD is not running

我们开启防火墙 systemctl start firewalld

注意: 我这里的版本的 centos7,所以开启服务 是用 systemctl

centos6 应该用chkconfig 命令

 

 

 

 

查看防火墙状态

systemctl status firewall

 

开放指定端口

firewall-cmd --add-port=6379/tcp --permanent

--permanent 代表永久开放此端口,如果不加,那么linux重启时失效

我们再查看一次

 

然后高兴的测试一下socket连接

报 Connection refused

发现云服务器的安全组还没有开放该端口

(这里说一下 云服务器的安全组作为一级防御,防火墙作为二级防御)

来源设置为 0.0.0.0/0 表示任何ip连接访问。

协议端口设置为 TCP:6379,因为redis默认端口为 6379,你也可以设置为 ALL表示开发所有端口。

策略设置为运行即可。

 

 

注意:记得把你的云服务器实例添加到这个安全组中,如果你有多个安全组的话。

 

然后再测试一下 还是 报 Connection refused

想来想去应该是redis的问题了,我查一下监听

netstat -lntp | grep 6379 (如果端口多过滤一下)

我是直接 netstat -lnpt

 

发现 它只监听127.0.0.1的ip,也就是只监听本机(服务器)

 

不明白,我记得明明注释了的,

查了一下redis的配置,才知道配置文件中

redis.conf 默认是 bind 127.0.0.1的,我看到上面的那行bind就没注意到下面的那行了。。。

我们把它注释掉

 

 

把redis.server带着redis.conf重启

./src/redis-server ./redis.conf

 

再次查看端口netstat -lntp | grep 6379

发现允许所有ip访问了

 

再进行测试

报异常 Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients.

提示要求 redis无法允许在protect-mode开启,不bind指定地址、不指定具体密码的环境下

我确实没有指定密码,也没有关闭protect-mode

在redis.conf中再关一下

 

上面注释说明了一切: 你应该关闭安全模式,如果你想要其他ip地址的客户端连接本机的redis,即使是不带密码。

再进行测试

连接成功

相关资讯

    暂无相关的资讯...

共有访客发表了评论 网友评论

验证码: 看不清楚?
    -->