自己的腾讯云服务器刚刚买下来初次使用,记录一下踩坑。
在云服务器上检测一下开放的端口:
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重启时失效
我们再查看一次
再次测试连接
发现云服务器的安全组还没有开放该端口(这里说一下 云服务器的安全组作为一级防御,防火墙作为二级防御)
来源设置为 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配置文件中注释掉bind 127.0.0.1
把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中再关一下
再次连接成功