解决微服务项目本地无法访问服务器redis,以及前端联调本地服务问题
前言
我们目前的微服务项目启动大约13个服务,其中12个服务我们在windows服务器上启动。还包括redis和nacos,seata,但目前就遇到这样的一个问题,本地无法访问服务器上的redis,间接导致无法获取登录的token,其次就是前端同事联调本地代码,同事无法通过nacos访问到我们本地的项目,尽管我们的服务注册到了nacos中。
1.解决无法访问服务器上的redis问题
redis的启动大部分是认为在Liaux 系统中部署,因为这是一个本身就比windows安全的系统,所以默认是没有密码的,其次就说redis本身就存在保护机制,默认只能本地127.0.0.1访问,所以针对这样的问题,直接修改配置文件即可。
上面有两个conf,其中“redis.windows.conf”是可以通过cmd命令窗口启动,在当前窗口启动cmd,输入“redis-server redis.windows.conf”
第二个“redis.windows-service.conf”,可以直接启动当前目录下的redis-server.exe。知道了这个之后就明白修改哪个配置文件了
**
将bind改为0.0.0.0
**
protected-mode 改成 no
如果要设置密码也可以加requirepass 后面接上你的密码即可,注意的是,这些配置必须顶格,不然无法启动redis,会报错无法识别列
上述配置我这边简单概述下bind原本绑定的就是本机ip,所以只允许本机访问当前的redis,其次protected-mode就说redis的保护机制,是否开启redis访问的机制,这个跟bind是有关系的,如果bind被注释掉,这个机制也就失效,也就说只有bind存在,这个保护机制才可以开启
redis的RDB持久化
redis的持久化就是将存的数据写入内存,这里RDB通过快照将内存中的数据以快照的方式写入二进制文件中,默认的文件名是dump.rdb,重启redis后,他会去将存在这个文件的数据读出来,达到持久话的效果
只需要修改配置文件,将配置文件中的appendonly no 改成 appendonly yes
启动后自动生成默认文件
前端如何联调本地服务
前端访问不到我们本地的服务器根本原因就是我们不在一个局域网中,只需要将我们本地服务的ip+端口穿透下就可以了,这里我使用的是ngrok(https://www.ngrok.cc/)
这个软件是需要实名认证的,花了我两块大洋,不过有一个免费的穿透地址,还不用过期,这就很舒服,他只有一个免费的隧道,再想开另一个端口就需要付钱的啦。
选择最后一个即可
协议根据自己需求选择,隧道名称输入喜欢的,前置域名,就是你自己穿透后的地址,你输入的这块前置加上他们系统加上的后面一坨,组成的地址,本地端口输入自己本地的ip+端口 就可以 保存提交回到隧道管理下载他们的客户端,本地直接启动
这里的需要输入的就是隧道管理你穿透的那一条最前面的id,回车,然后就穿透成功啦
nacos上的redis配置记得要改哦,ip改成服务暴露出来的ip就可以了