阿里云部署Redis服务器远程连接问题

昨天在阿里云免费领了一个月的云服务器,就着最近学的SpringBoot,准备做一个SpringBoot与Redis的整合。

因为以前用的Redis都是安装在本地的,使用过程中没遇到什么大问题,可是一旦部署到真实的云服务器上就出现了一大堆问题,且听我慢慢道来。

在安装Redis前,云服务器实例是完全纯净的。首先执行下面的命令下载并安装redis:

//下载
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
//解压
tar xzf redis-4.0.9.tar.gz
//进入解压后的目录
cd redis-4.0.9
//安装到当前目录
make

如果make失败,一般是系统中还未安装gcc造成的,因为Redis是用C语言写成的,所以需要先通过yum install gcc安装C语言环境。

安装Redis后,先别慌着启动,因为Redis对远程连接要求比较苛刻,具体到以下几点:

Redis服务默认只让本机访问,因为现在Redis是在人家阿里云的服务器上,所以需要修改成让外网也能访问。主要是修改Redis的默认配置文件reidis.conf。

  • 注释掉bind 127.0.0.1这一行,这样可以使所有的ip访问redis
  • 修改 protected-mode,值改为no,生产环境下要改为yes
  • 为了Redis的安全,需要把#requirepass foobared去掉注释,foobared改为自己的密码,例如可以改为requirepass 123456

经过以上几步后,理论上就可以通过外网访问到云服务器上的Redis了。如果现在去启动Redis的服务端,会发现Redis只能是前台启动,在这里可以通过修改redis.conf里的daemonize为yes让redis开启后台启动。

因为redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。

在修改完配置文件后,我们进入redis-4.0.9的scr目录,执行以下命令启动Redis的服务端:

./redis-server ../redis.conf

这样Redis就在云服务器上以后台的方式启动了,接下来我在本地快速搭建了一个SpringBoot整合Redis的案例。在application.properties添加如下内容:

#设置redis主机ip
spring.redis.host= #你的云服务器IP地址
#连接redis服务的密码
spring.redis.password= #刚刚在redis.conf中设置的密码

添加controller如下:

@RestController
public class TestRedis {
    @Autowired
    private StringRedisTemplate strTplRedis;
    @GetMapping("/testredis")
    public String testRedis(){
        strTplRedis.opsForValue().set("testkey", "testvalue");
        strTplRedis.opsForValue().get("testkey");
        return "success";
    }
}

此时我们启动项目后,访问localhost:8080/testredis,出现如下错误:
这里写图片描述

这里问题就来了,显示无法连接到Redis,此时配置文件里面该改到的都已经改了,后来我又想到应该是防火墙的问题,因为redis的端口是6379,服务器默认是不开启这个端口的,所以我执行下面命令关闭了防火墙:

sudo service iptables stop

重新访问url,发现还是报同样的错……

于是去请教大神,经过大神的一顿排查,最后告诉我应该是我服务器的安全组规则的问题。

原来,新建的阿里云服务器实例,是默认不让外网访问的,一个实例属于一个安全组,这个安全组里一开始有阿里云为我们定义的规则,默认是不开放任何tcp端口的,具体的可以查看官方的介绍:添加安全组规则

在修改好安全组规则后,再访问页面url,页面显示success,这下总算是将数据存进去了,使用Redis的桌面客户端也能远程连接到Redis,显示Redis里面的数据如下:
这里写图片描述

回头看来,远程连接Redis的坑基本上是被我踩完了……

### 阿里云 ECS 部署 Redis 的教程及配置方法 #### 一、环境准备 在阿里云 ECS 上部署 Redis,首先需要确保服务器已经准备好。这包括操作系统的选择以及必要的安全组设置。 - 确保已购买并初始化一台阿里云 ECS 实例,并完成 SSH 登录测试[^1]。 - 打开阿里云控制台的安全组设置页面,新增一条入方向规则允许外部访问 Redis 默认端口 `6379`[^4]。 #### 二、Redis 安装与启动 以下是具体的安装和启动流程: 1. **更新系统包** 更新系统的软件源以获取最新版本的工具: ```bash sudo apt update && sudo apt upgrade -y ``` 2. **下载 Redis 并解压** 下载官方发布的稳定版 Redis 文件并解压缩到指定目录: ```bash wget http://download.redis.io/releases/redis-6.2.6.tar.gz tar xzf redis-6.2.6.tar.gz cd redis-6.2.6 make ``` 3. **复制可执行文件至全局路径** 将编译好的 Redis 可执行程序移动到 `/usr/local/bin` 中以便于后续调用: ```bash sudo cp src/redis-server /usr/local/bin/ sudo cp src/redis-cli /usr/local/bin/ ``` 4. **创建配置文件夹并放置默认配置** 创建专门用于存放 Redis 数据及相关日志记录的位置,并将自带样本配置拷贝过去修改适配需求: ```bash mkdir -p /etc/redis cp ./redis.conf /etc/redis/redis.conf ``` 5. **编辑核心参数调整绑定地址** 修改 `/etc/redis/redis.conf` 文件中的 bind 参数解除本地回环限制从而支持外网接入请求: ```conf bind 0.0.0.0 protected-mode no requirepass yourpasswordhere port 6379 daemonize yes logfile "/var/log/redis_6379.log" dir /var/lib/redis appendonly yes ``` 这些更改分别涉及监听所有网络接口、关闭保护模式启用密码验证机制增强安全性、设定持久化选项等内容[^2]。 6. **正式开启服务进程** 使用定制化的配置文档来激活实例运行状态: ```bash redis-server /etc/redis/redis.conf ``` 7. **校验是否正常工作** 利用客户端工具尝试连接确认无误后结束操作: ```bash redis-cli ping PONG ``` 如果一切顺利的话,则说明当前节点上的 Redis 已经可以正常使用了。 #### 三、远程管理与监控 为了方便日常运维管理工作,在实际生产环境中往往还需要借助图形界面类的应用来进行直观展示分析。 - 推荐使用 Redis Desktop Manager (RDM),它是一款跨平台的支持多类型 NoSQL 数据库查看器之一。 安装完成后按照提示填写目标主机 IP 地址以及其他必要认证信息即可建立会话链接进行探索查询等活动。 --- ### 总结 综上所述,从基础软硬件条件搭建起步直至最后实现功能完备的服务上线整个过程中涵盖了诸多细节需要注意处理得当才能保障最终效果达到预期水平[^3]。 ```python # 示例 Python 脚本演示如何利用 Jedis Pool 访问远端 Redis 实例 from redis import StrictRedis, ConnectionPool pool = ConnectionPool(host='your_server_ip', port=6379, db=0, password='yourpassword') rds_conn = StrictRedis(connection_pool=pool) print(rds_conn.ping()) # 应返回 True 表明连通性良好 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值