天天看点

redis+最新版本+linux,ubuntu 17.04安装最新版本redis

记录使用apt-get在ubuntu server上安装最新版本Redis的过程。在ubuntu安装redis最简单的方式,就是使用apt-get

sudo apt-get install redis-server

但是这个方式有个问题,就是仓库中的redis-server很可能不是最新的版本。

在之前的Blog里面,因为使用这个原因,我采用了手工安装的方式。

今天在准备另外一个环境时,想了想apt-get应该更方便一些,只要仓库中的redis-server版本足够新就好了。

准备工作

要拿到最新的redis-server版本,就必须将redis的仓库加入到源。

ubuntu搜索ppa的地址

https://launchpad.net/ubuntu/+ppas

https://launchpad.net/ubuntu/+ppas?name_filter=redis-server

方法有两种:

方式一:修改source文件 (默认地址:/etc/apt/resources.list)

deb http://ppa.launchpad.net/chris-lea/redis-server/ubuntu trusty main

deb-src http://ppa.launchpad.net/chris-lea/redis-server/ubuntu trusty main

方式二:用add-apt-repository命令

sudo add-apt-repository  ppa:chris-lea/redis-server

这个方式无疑要方便很多。

不过 add-apt-repository 命令一般系统是没有自带的,所以还需要自己安装一下。

这个命令的安装有点麻烦,ubuntu不同版本中这个命令的安装方式不同:

对于12.04以及以下版本,需要安装python-software-properties

sudo apt-get install python-software-properties

对于12.10以及以上版本,需要安装software-properties-common

sudo apt-get install software-properties-common

比较爽快而无需费脑的方法是两个都安装一下。

安装

首次安装Redis

安装过程简单,update再install就好了,加上前面准备add-apt-repository,命令依次如下:

sudo apt-get install -y python-software-properties

sudo apt-get install software-properties-common

sudo add-apt-repository  ppa:chris-lea/redis-server

sudo apt-get update

sudo apt-get install -y redis-server

使用下面的源

Adding this PPA to your system

You can update your system with unsupported packages from this untrusted PPA by adding ppa:chris-lea/redis-server to your system's Software Sources. (Read about installing)

https://launchpad.net/~chris-lea/+archive/ubuntu/redis-server

sudo add-apt-repository ppa:chris-lea/redis-server

sudo apt-get update

如果是第一次用apt-get安装redis-server,那么这样就搞定了。

更新旧版redis

如果之前已经用apt-get安装过redis-server的旧版本,再执行apt-get install时就有可能遇到问题。

我遇到的错误信息如下:

[email protected]:~$ sudo apt-get install -y redis-server

[sudo] password for zilaike:

Reading package lists... Done

Building dependency tree

Reading state information... Done

redis-server is already the newest version (2:3.2.1-1).

The following packages were automatically installed and are no longer required:

bbswitch-dkms dkms iucode-tool lib32gcc1 libc6-i386 libvdpau1 libxnvctrl0

linux-headers-4.10.0-19 linux-headers-4.10.0-19-generic

linux-image-4.10.0-19-generic linux-image-extra-4.10.0-19-generic

mesa-vdpau-drivers nvidia-prime nvidia-settings python3-pyinotify

screen-resolution-extra vdpau-driver-all xserver-xorg-legacy

Use 'sudo apt autoremove' to remove them.

0 upgraded, 0 newly installed, 0 to remove and 116 not upgraded.

为了解决问题,决定先uninstall掉老版本的redis

apt-get remove redis-server

apt-get autoremove

再次执行apt-get install就可以顺利安装了

设置开机启动:

systemctl enable redis-server.service

(发现并不生效,systemctl指令的一个bug,需要用下载源码包编译的方式才能开机启动!源码包装完了啥也不用干就开机启动了,另外如果给redis增加了登陆密码,需要把redis_6379这个配置文件的关机指令修改一下,增加密码参数,稍后会有说明)

systemctl start redis-server.service(启动指令可以生效)

编译安装的方法

1].Redis源码获取

1、进入Redis官网获取Redis最新稳定版下载地址

2、通过wget命令下载 Redis 源代码。

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

2].Redis编译

1、通过tar -xzvf redis-4.0.2.tar.gz命令解压下载Redis源码压缩包redis-4.0.2.tar.gz;

2、编译Redis。通过cd redis-4.0.2/进入Redis源码目录内,执行make编译Redis;

注意:make命令执行完成编译后,会在src目录下生成6个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump、redis-sentinel。

3].Redis安装配置

1、安装Redis,执行 make install 会将make编译生成的可执行文件拷贝到/usr/local/bin目录下;

2、执行 ./utils/install_server.sh 配置Redis配置之后Redis能随系统启动。

关于ubuntu17.04安装redis_6379.service后systemctl不能关闭,机器关闭缓慢等问题的解决方案

故事是这个样子滴,我在ubuntu17.04上编译安装了redis,并用redis自带配置工具配置了开机启动,启动很完美。不过关机时候卡半天才能关掉,一查资料发现应该是某个程序的进程没关掉,ubuntu在等待关闭进程才能下一步。一想可能是最近安装的redis启动保护进程出的问题。

然后做实验。看了看状态,好啦。找到问题了。

/etc/init.d/redis_6379 stop

肯定是这玩意执行的关机操作,粘贴下来执行试了试,不停的等待。死循环。

无用的错误提示。单独执行后发现,是没有认证,也就是redis加了密码,配置脚本文件没有加对应的密码认证。于是问题就简单了。

redis+最新版本+linux,ubuntu 17.04安装最新版本redis

解决方案:

找到这个配置文件 ,执行如下指令:

gedit /etc/init.d/redis_6379

redis+最新版本+linux,ubuntu 17.04安装最新版本redis

敲过代码的看到这个东西,猜也猜到啥情况了。无非就是开局声明了几个常量,然后下文中case when语句根据外部传入的第一个参数$1,区分接下来的操作是start stop status 还是restart....

注意选中的这个stop。也就是关键点。这不就是redis-cli这个客户端关闭服务器嘛,没密码认证吧。在这个shutdown 前面加 -a yourpassword 就好了啦。不怕费事的也声明个变量存密码,偷懒的直接写里面就好啦。OK。大功告成。