昨天在阿里云免费领了一个月的云服务器,就着最近学的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的坑基本上是被我踩完了……

阿里云部署Redis服务器远程连接问题的更多相关文章

  1. 阿里云ECS使用vnc远程连接(Ubuntu + CentOS)

    阿里云ECS使用vnc远程连接https://blog.csdn.net/m0_37264397/article/details/78271896 在Linux实例上自动安装并运行VNC Server ...

  2. 阿里云部署nodejs服务器(windows)

    花了大半个月做的网站终于要上线了,周围的同学们很多都在使用阿里云的服务器,我也入手了一台.考虑到自己不是很适应ubuntu的命令行界面,于是买了个windows的,上网搜了一下,似乎都是用linux来 ...

  3. 阿里云配置mysql navcat远程连接

    默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log 首先登录: mysql -u root -h local ...

  4. 阿里云主机CentOS7设置远程连接MySQL数据库

    有一个困扰了我好久的问题,今天终于解决了. 看网上的答案只有一部分.今天把完整的发篇博客纪念一下下. 首先,连接阿里云主机并登录数据库, 1.添加一个Host mysql>select User ...

  5. 宝塔 + 阿里云ECS + MySql + Navicat 远程连接数据库

    宝塔 + 阿里云ECS + MySql + Navicat 远程连接 1. root登录: 2.  grant all privileges on *.* to root@'%' identified ...

  6. 阿里云服务器远程连接错误:由于一个协议错误(代码:0x112f),远程会话将被中断。

    2019年10月,阿里云服务器远程连接忽然无法登录.当时正在清理c盘空间,C盘只剩下30+M,忽然远程桌面掉线,以为断网了,再次远程桌面连接时,就出现一下错误. 解决方案:万能的重启!!!具体错误原因 ...

  7. 阿里云部署自己的web服务器

    阿里云部署自己的web服务器 [外链图片转存失败(img-GIKNTPPx-1564287221547)(https://upload-images.jianshu.io/upload_images/ ...

  8. 小白从零开始阿里云部署react项目+node服务接口(一:阿里云服务器)

    准备阿里云服务器,并安装系统 如果没用自己服务器可以购买一个 https://www.aliyun.com/minisite/goods?userCode=x7i5glgc 初级购买一个1核2G的主机 ...

  9. 通过nginx转发,用外网连接阿里云的redis,报Unexpected end of stream的解决办法

    一.在与redis同一个内网的服务器上A的nginx做了下面的设置 stream { upstream redis { server  redis.rds.aliyuncs.com:6379 max_ ...

随机推荐

  1. numpy 辨异(二) —— np.identity()/np.eye()

    import numpy as np; 两者在创建单位矩阵上,并无区别,两者的区别主要在接口上: np.identity(n, dtype=None):只能获取方阵,也即标准意义的单位阵: np.ey ...

  2. 简明Python3教程 15.异常

    简介 当程序发生意外情况时则产生异常. 例如你需要读一个文件而这个文件并不存在会咋样?又或者是程序运行时你把它误删除了呢? 上述情形通过异常进行处理. 类似的,如果你的程序存在一些非法语句会发生什么呢 ...

  3. 利用WPF的ListView进行大数据量异步加载

    原文:利用WPF的ListView进行大数据量异步加载 由于之前利用Winform的ListView进行大数据量加载的时候,诟病良多,所以今天试着用WPF的ListView来做了一下,结果没有让我失望 ...

  4. git clone命令简介

    git clone: 正如上图,当我们打开终端的情况下,默认我们所在的目录是在/home/shiyanlou的,大家可以在终端输入以下命令把目录切换到桌面cd  /home/Desktop这个时候输入 ...

  5. python 教程 第六章、 模块

    第六章. 模块 1) 模块 sys模块 字节编译的.pyc文件,优化编译后生成pyo文件 2) from..import语句 import sys print 'The command line ar ...

  6. 用C语言编写Windows服务程序的五个步骤

    Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务.为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择.本文将建立并实现一个简单的服务程序,其功能是查询系统 ...

  7. 如何加入该网站for Linux(绑定域名)

    [路径跟踪配置由阿里云提供的标准环境的路径为准,假设你单独安装.请根据实际的安装路径配置].   1.cd /alidata/server/httpd/conf/vhosts/ 进入绑定域名所在文件夹 ...

  8. Python+Django+SAE系列教程10-----Django模板

    在本章中,我们开始模板,在前面的章节,您可能已经注意到,我们回到文本的方式有点特别的示例视图. 那.HTML直接在硬编码 Python 其中代码. 这的确是一个小BT. def current_dat ...

  9. 读BeautifulSoup官方文档之html树的搜索(2)

    除了find()和find_all(), 这里还提供了许多类似的方法我就细讲了, 参数和用法都差不多, 最后四个是next, previous是以.next/previous_element()来说的 ...

  10. SQL logic error or missing database no such table: xxx

    原文:SQL logic error or missing database no such table: xxx System.Data.SQLite.SQLiteException (0x8000 ...