阿里云ECS服务器部署redis服务外网不能访问解决方案

前些日子用学生价搞了个阿里云服务器,寻思着折腾折腾,而且最近在学习redis,自然而然的打算将redis部署在服务器上,谁知道这玩意在服务器本地上玩的好好的,用我windows本本死活都连接不上,好一番折腾啊!姑且记录一下!

redis安装

关于安装这里流水账记录下,网上的教程很多,多提一句,redis运行环境一般都是在linux下,不过微软搞了个windows版的可以在windows下使用。咱这里就以Centos 7.2这Linux版本来运行。

下载

wget http://download.redis.io/releases/redis-5.0.9.tar.gz

记得将后面redis的版本改成自己需要的。下载之后建议将安装包拷贝到usr/local目录下,然后解压

tar -vzxf redis-5.0.9.tar.gz

切换到解压之后的目录开始编译安装,可能初次安装会失败,提示缺少gcc编译器,因为redis是用c语言开发的,不过一般服务器上会自带,如果出错了,根据提示安装gcc编译器即可。执行如下命令编译安装:

make
make insatll

安装之后可以考虑将其配置到环境变量中,这样可以在任何地方运行。

在redis的解压目录中有个redis.conf文件,这个是其配置文件,建议单独拷贝备份一份,我这里将其拷贝到安装之后的bin目录下。

以上操作都正确完成后,bin目录下的文件如下:

此时,执行如下命令即可启动redis

./redis-server

不过这时候使用的是默认配置文件,redis只能在当前线程下运行关闭窗口就停止,后面会配置以后台进程的方式运行。此外redis自带了个客户端,另起窗口,运行如下命令即可打开客户端进行操作

./redis-cli

不过这时候都是在本地操作,远程连接redis是连不上的,接下来我们进行相应配置。

外网访问redis

要想外网访问redis需要对配置文件进行相应配置,一般来说需要配置三处,打开redis.conf配置文件,修改如下三处:

第69行

bind 127.0.0.1

这个位置的bind是配置redis对外暴露的ip,也就是外网可以通过哪个ip来访问redis,这里建议改成如下,表示可以任意ip访问redis,为了安全也可以将这里改为服务器ip地址,只能通过这个地址,不过这里需要和阿里云的安全配置策略相呼应,后面再细说。

bind 0.0.0.0

第88行:

protected-mode yes

这里将yes改为no,否则改了绑定ip地址仍不能访问。

第136行:

daemonize no

这里将no改为yes,表示以后台进程的方式启动redis。

一般来说,通过上面三步即可通过外网访问redis,不过这里我却死活都连接不到,因为用的是阿里云ECS服务器,虽然redis上的相关配置可以了,但是在服务器上还需要开放相关端口。

打开阿里云的控制面板,找到安全组打开,如下

为redis创建一个安全策略,并开放相关端口,如下,注意这里的授权对象一定要和redis配置文件中的bind的ip地址相同。

经过上面的配置就可以愉快的用外网连接阿里云服务器上的redis了。注意要使用到以下命令启动redis,一定要使用到修改后的配置文件,否则还是以默认方式启动。

./redis-server ./redis.conf

总结

经过折腾总算可以在外网连接redis,总结这次排查问题的过程,对linux端口相关配置不熟悉,尽管将redis配置妥当,但是关于linux的相关设置也要了解。

推荐阅读更多精彩内容