新手爬坑记录之:云部署,一个redis引发的问题

  因为公司的技术人比较少,我们的项目都是一人负责一个,从编写技术文档、代码实现、数据库设计、部署上线、维护迭代。然而对于我是个开发人员来说,运维的知识其实我并不是有多熟悉,但没办法,既然担子来了,就得一个人扛。所以必须硬着头皮一步步的去摸索学习。

 我们公司用的是阿里云的服务器,然后买了台2核 4GB的 linux  CentOS 7.4 64位服务器,最近我的项目完工了,我到服务器上进行部署。然后项目启动时报错:java.net.SocketTimeoutException: connect timed out。因为项目引入了redis服务,所以我很快就知道是redis连接超时了。于是我直接在云控制台输入命令查看redis是否已经启动

新手爬坑记录之:云部署,一个redis引发的问题

既然redis已经启动,于是我想是不是因为防火墙被拦截,所以我又看了下防火墙开放的端口:

新手爬坑记录之:云部署,一个redis引发的问题

因为CentOS 7服务器默认是用firewall防火墙,而没有iptables。所以我一看端口也开放了,然后又去安全组查看6379端口是不是已经入栈:发现也没有问题

新手爬坑记录之:云部署,一个redis引发的问题

那这个错误一定就是配置有问题。所以我又去打开redis.conf文件查看。服务的超时时间我设置的是10s,修改了daemonize 为no(这么做其实是不安全的,这样就缺乏了redis自身的保护机制,我只是为了测试),于是就重新启动了redis服务。但是项目仍然报java.net.SocketTimeoutException: connect timed out。这下可把我弄急了,我干脆就直接把防火墙给关闭了。然后再启动项目,仍然报错!无奈,我求助以前的同事,他说重启下linux看看,之前也遇到过无缘无故的无法连接redis服务。于是我就重启了云服务器。

接着我又重新启动了下项目,然后恶心的事情来了,项目报错:端口被占用了。因为我的项目使用的是80端口,之前一直都是好好的。我感觉奇怪,于是:

新手爬坑记录之:云部署,一个redis引发的问题

我非常诧异,我在nginx的配置文件里 明明已经将默认端口改成 82了。这个80端口是哪来的?我又查看下82端口:

新手爬坑记录之:云部署,一个redis引发的问题

 

然后我感到奇怪,接着我直接干脆的kill掉80端口的进程,但是发现,系统又自启了一个占用80端口的nginx服务。这下把我搞无语了,kill又kill不掉,那怎么办,只能去改配置了。于是我找到了nginx配置文件,进去看了下:

新手爬坑记录之:云部署,一个redis引发的问题

没错,的确是82端口,并且 我只有这1个server配置,然后我就好奇的进入 include文件里看,结果也没有发现有80端口服务。

然后我又找,在配置的最后一行,发现了:

新手爬坑记录之:云部署,一个redis引发的问题

这里又有个include 文件,于是我进入目录看了下

新手爬坑记录之:云部署,一个redis引发的问题

有这么多,于是挨个打开看了下,结果发现每个文件都有这行:

新手爬坑记录之:云部署,一个redis引发的问题

 这难道是罪魁祸首么?于是我把这些文件改成了82端口。 然后我重启了服务。接着再查看80端口:

新手爬坑记录之:云部署,一个redis引发的问题

终于没有了,只有82监听的进程。看来罪魁祸首还真的是 那个include 文件,而之前一直kill 不掉进程的问题其实就在这里,其实并不是真的kill不掉,而是因为nginx 引入了那4个文件,而且它们监听的是80端口,所以要kill 4次才能彻底杀掉进程。

然后我又重启了redis,部署了项目。启动之后终于OK了,redis也能顺利的连接,没有出现问题。本次部署成功结束了。