记录使用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加了密码,配置脚本文件没有加对应的密码认证。于是问题就简单了。
解决方案:
找到这个配置文件 ,执行如下指令:
gedit /etc/init.d/redis_6379
敲过代码的看到这个东西,猜也猜到啥情况了。无非就是开局声明了几个常量,然后下文中case when语句根据外部传入的第一个参数$1,区分接下来的操作是start stop status 还是restart....
注意选中的这个stop。也就是关键点。这不就是redis-cli这个客户端关闭服务器嘛,没密码认证吧。在这个shutdown 前面加 -a yourpassword 就好了啦。不怕费事的也声明个变量存密码,偷懒的直接写里面就好啦。OK。大功告成。