看过我上一篇文章的应该知道明年可能就要溜了,所以最近打算把公司用到的技术自己在虚拟机上搭建一遍,以便做好准备。
VMware安装
因为之前一直用的VMware,所以这里我也推荐最新的VMware Workstation 15 Pro,附上官网地址www.vmware.com/cn.html,点击下载找到产品即可,但是现在下载貌似需要注册信息,所以良心的我已经把相关的安装包以及pojie码打包好了(懒人理解懒人),链接:pan.baidu.com/s/1OzSt7lMn…,提取码:4ehn,不谢。至于安装教程就不多说了,Google一搜一大堆,学会使用搜索引擎,装完之后是这个样子。
镜像安装
跟上面一样,安装教程网上搜,创建新的虚拟机选择下载好的镜像就行,基本傻瓜式安装,国际惯例附上官网下载地址isoredirect.centos.org/centos/7/is…,这是DVD版的也就是完整版,官网现在提供DVD和Minimal两个版本,具体区别找Google。需要注意的是,由于镜像大小在3-4个G左右,最好是在网速稳定的情况下下载,要不然下载的可能是个阉割版,很多linux命令都没有,别问我怎么知道的。装完之后是这个样子的,各个版本也可能不同,没有一一试过。因为我是在公司电脑用xshell操作连接虚拟机的centos操作的,所以为了方便配置了一下静态IP,防止每次重启虚拟机IP都会变。
Redis安装
首先我们用xshell连接到服务器(也可以直接在虚拟机中操作),进入要安装的目录,由于我本人有轻微强迫症+洁癖,会把目录分的很清楚,后面也会体现,我是在/usr/local/目录下mkdir了一个software目录,国际惯例,找到我们redis的官网,
中间的Download it 如果点击第一个会直接跳转下载压缩包的界面,在这里直接选择安装模式,点击中间的Check the downloads page,直接附上链接redis.io/download,往下拉会看到安装的指令,按照官网来就完事了,注意要切换成root权限,才可以安装。
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make默认解压到当前目录,安装完之后呢,我们进入redis-5.0.5下的src目录,强迫症又来了,为了方便管理我在redis-5.0.5目录下mkdir了etc和bin两个目录,bin用于存放命令,etc存放配置文件,移动的时候看好所在目录。
mv redis.conf etc/ mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb ../binRedis服务启动
进入bin目录下,进行Redis服务启动:
直接执行./redis-server启动,虽然看到服务已经启动起来,但是并没有使用到etc/redis.conf配置文件。目前还是使用默认配置进行服务的启动,而且并不是后台启动。
这时我们ctrl+c终止,会打印如上信息,并且ps查看redis并没有进程。后台启动的方法有多种,我这里只说两种。
1.指定配置文件启动
./redis-server /usr/local/software/redis-5.0.5/etc/redis.conf这里需要先修改下redis.conf文件,把其中的daemonize后面的no改为yes(直接使用‘/’命令搜索就好了),保存退出,启动命令后面跟上配置文件的全路径,因人而异,这样启动再查看进程可以看到已经后台启动服务成功,此时就可以进入redis-cli进行客户端交互了。接下来让我们执行pkill redis-server杀掉进程,用第二种方式启动。(也可以通过杀掉进程号来停服务)
2.启动命令后面加个&
./redis-server & 第二种方式会看到启动是这个样子,有很多warning,作为一个有强迫症的人,怎么能容忍warning呢,我只是在这记录一下解决方案,至于why的话,请自行Google。
1)
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128意思是:TCP backlog设置值,511没有成功,因为 /proc/sys/net/core/somaxconn这个设置的是更小的128.这个貌似是关于TCP握手相关的东西,详情还得Google。
解决方案:net.core.somaxconn= 1024 写入/etc/sysctl.conf
要在root权限下才能写入,保存后一定要执行sysctl -p使配置生效
[root@localhost bin]# vim /etc/sysctl.conf
[root@localhost bin]# sysctl -p
2)
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect意思是:overcommit_memory参数设置为0!在内存不足的情况下,后台程序save可能失败。
内核参数overcommit_memory 它是 内存分配策略 可选值:0、1、2。
- 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
- 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
- 表示内核允许分配超过所有物理内存和交换空间总和的内存
解决方案:vm.overcommit_memory=1 写入/etc/sysctl.conf
这一步跟第一个警告解决过程是一样的,别忘了执行sysctl -p使配置生效
3)
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.翻译的是:你使用的是透明大页,可能导致redis延迟和内存使用问题。
解决方案:先执行echo never > /sys/kernel/mm/transparent_hugepage/enabled,再写入/etc/rc.local中,我也不知道为什么,反正直接写入还是会报。解决完以上,重启redis是这样的。
总结
以上就是我在自己安装redis中遇到的问题,解决方案都是Google来的,具体的报错原因需要了解的自行Google就好了,如果在安装过程中遇到了其他问题可以在评论区沟通一下,毕竟都是学习的一个过程,互相成长,另外不足之处还请指出,谢谢。