暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis | Day32 python远程连接阿里云redis

走向易富强之路 2021-07-14
1239

背景说明:
1、为了防止三天打鱼两天晒网式学习
2、每日更新1-2个小知识点或者案例
3、只看和跟着做的理解程度是不一样的
4、建议一起打卡练习
5、互相督促打卡 + v:yifuqiang2021

Day32

目标:
  • Redis配置
  • 阿里云配置
  • python远程连接阿里云

一、Redis配置
a、前提是有一台阿里云服务器
安装Redis服务参考:Redis | Day29 Redis的安装与配置

b、打开配置文件:vi redis.config

c、补充三条关于vi命令的使用
  • 输入:/ +(需要搜索的字符串)进入搜索,n键找下一个匹配的搜索结果
  • 输入:i,进入编写模式,
  • ESC切换模式,输入:wq保存退出

d、找到:bind,修改为:bind 0.0.0.0
  • bind设置为:bind 0.0.0.0,表示所有主机都可以连接到redis。
    • 前提:你的服务器必须开放redis的端口(需要结合以下阿里云安全组的配置开放端口)
  • 或者bind绑定安装了redis服务器的ip,比如阿里云服务的ip地址
    • 查看服务器的ip命令:ip addr

e、找到:protected-mode,修改为 protected-mode no
protected-mode是redis本身的一个安全层,这个安全层的作用:就是只有【本机】可以访问redis,其他任何都不可以访问redis,这里将yes改为no,否则改了绑定ip地址仍不能访问。

f、找到:daemonize,修改为 daemonize no
将no改为yes,表示以后台进程的方式启动redis

g、关闭redis服务:
  • 查看进程号:ps -ef | grep redis ,强制关闭服务:kill pid(进程号)
  • 进入客户端:./src/redis-cli,关闭服务:shutdown,退出客户端:exit

h、启动redis服务:./src/redis-server redis.config
关键点:修改完配置后,一定要指定配置文件启动redis,否则上面改的配置一个都不会生效!!!!

二、阿里云配置
  • 安全组配置redis的端口,开放访问redis服务入口
  • 配置防火墙,开放访问端口

操作1:进入实例,找到安全组配置


操作2:添加规则,其中Redis默认的端口号为6379,以及填写授权对象


限制只有指定的主机可以连接到redis中,只能通过防火墙来控制,而不能通过redis中的bind参数来限制。使用阿里云的安全组,来限制指定的主机连接6379端口。

操作3:防火墙(iptables)配置
a、修改服务器的防火墙(iptables)配置,开启redis服务端口,默认是 6379。
  • 开启防火墙:systemctl start firewalld.service
  • 添加端口:firewall-cmd --zone=public --add-port=6379/tcp --permanent
  • 重启防火墙:firewall-cmd --reload

b、验证防火墙的配置
  • 查看通过的端口:firewall-cmd --zone=public --list-ports
  • 查看端口是否开发成功:firewall-cmd --query-port=6379/tcp

三、遇到的问题:
报错1、未配置阿里云安全组规则和服务器上的防火墙,无法连接redis
新建的阿里云服务器实例,是默认不让外网访问的,一个实例属于一个安全组,这个安全组里一开始有阿里云为我们定义的规则,默认是不开放任何tcp端口的。

报错2、没有指定配置文件启动服务,即上面的配置全都没生效的报错
以下为复制出来报错信息的google翻译

四、python远程连接阿里云
    # encoding ='utf-8'
    import redis


    if __name__ == '__main__':


    # 创建redis
    # 连接/获取外界资源的时候一定要注意使用try
    try:
    rs = redis.Redis(host='39.xxx.xxx.xxx',port=6379)
    except Exception as e:
    print(e)


    # 操作string
    # 添加 set key value
    result = rs.set('name','itcast')
        print(result)
    运行结果:

    五、总结
    • 当远程连接不上redis时,需要检查以下几个方面:
      • redis的配置
      • redis服务是否按配置启动,即重新启动:./src/redis-server redis.config
      • 阿里云服务器是否配置安全组,安全组是否配置了访问地址和端口号
      • 检查阿里云服务的防火墙配置

    碎碎念:
    • 为了远程连接redis,自己至少捣鼓了5个小时还没搞好,搞到觉都不想睡了。
    • 最后感谢焕权大佬的鼎力协助,才发现我一直没有按配置文件启动redis,导致服务报错一直是提示检查配置文件。
    • 这条路门都还没入就差点要放弃了,学习路上有大佬帮忙搭把手是多么重要和幸运的一件事,再次感谢焕权大佬,有空一定请吃饭。

    “你的鼓励,是我继续的动力”
    文章转载自走向易富强之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论