系统环境:
$ cat /etc/issue
Ubuntu 14.04.2 LTS \n \l
1. 下载安装
1.1 下载
官方下载地址:
下载最新稳定版
redis-3.2.0.tar.gz,大小仅 1.49 MB。
1.2 安装
将下载的安装包放在用户目录下,如
/home/webapp,打算将其安装到 /opt/redis:
$ sudo mkdir /opt/redis
$ cd /home/webapp
$ tar xzf redis-3.2.0.tar.gz
$ cd redis-3.2.0
$ sudo make PREFIX=/opt/redis install
之后查看
/opt/redis,下边只生成了一个 bin 目录,该目录下只有六个文件:
redis-benchmark redis-check-dump redis-sentinel
redis-check-aof redis-cli redis-server
安装完成。
2. 注册为系统服务
2.1 编辑服务脚本
查看安装包自带服务脚本:
将其拷贝到
/etc/init.d 目录并重命名为 redis:
$ sudo cp /home/webapp/redis-3.2.0/utils/redis_init_script /etc/init.d/redis
然后依据 redis 的安装路径修改
/etc/init.d/redis 为:
注意红色字体部分:
- $EXEC $CONF &,后边的&,表示将服务转到后台运行;
- EXEC、CLIEXEC、CONF
2.2 复制配置文件
将
/home/webapp/redis-3.2.0 下提供的 redis.conf 默认配置文件拷贝到 redis 安装根目录下并重命名为 6379.conf:
$ sudo cp /home/webapp/redis-3.2.0/redis.conf /opt/redis/6379.conf
2.3 环境变量设置
追加以下内容到
/etc/profile 文件:
export PATH=/opt/redis/bin:$PATH
执行
. /etc/profile 以使配置立即生效并使用
echo $PATH 验证之。
2.4 服务注册
Ubuntu 在 10.04 之前的版本在配置开机启动服务时都是使用 chkconfig,而在之后的版本就没有 chkconfig 命令了:
$ sudo chkconfig --add redis
sudo: chkconfig: command not found
chkconfig 的替代方案为
update-rc.d :
$ sudo update-rc.d redis defaults
服务注册成功会有以下输出:
/etc/rc0.d/K20redis -> ../init.d/redis
/etc/rc1.d/K20redis -> ../init.d/redis
/etc/rc6.d/K20redis -> ../init.d/redis
/etc/rc2.d/S20redis -> ../init.d/redis
/etc/rc3.d/S20redis -> ../init.d/redis
/etc/rc4.d/S20redis -> ../init.d/redis
/etc/rc5.d/S20redis -> ../init.d/redis
3. 服务启动及验证
$ sudo service redis start
服务启动,执行
$ redis-cli ping
PONG
表明服务已启动。
$ netstat -an | grep 6379
tcp 0 0 127.0.0.1:6379
本地 6379
4. 远程连接的问题
4.1 远程主机拼不通 redis
telnet 的时候提示 connection refused
解决办法:
将 /opt/redis/6379.conf
bind 127.0.0.1
行给注释掉,然后重启 redis 服务即可。BTW,redis-3.0.4 版本中这里还是默认注释掉的,参考《Redhat5.8 环境下编译安装 Redis 并将其注册为系统服务》。
4.2 远程主机连接 redis 的一些问题
远程主机对 redis 端口进行 telnet 的时候报这个错误:
Redis 3.2 以后安全考虑,远程访问必须进行授权。
$ redis-cli
127.0.0.1:6379> config set requirepass defonds
OK
授权之后就能 telnet 通了,可以进行远程访问了:
这种授权方式在 redis 重启后会失效。可以启用 6379.conf
requirepass defonds
5. 持久化文件和日志
5.1 持久化
Redis 默认的持久化方式是快照方式,默认会将快照 dump.rdb 文件放在启动目录下(服务方式启动是在根目录下),我们可以通过更改 6379.conf 文件里 SNAPSHOTTING 大项下的 dir
dir ./
改为
dir /opt/redis/
5.2 日志
Redis 默认将日志输出到 /dev/null(即舍弃),我们可以通过更改 6379.conf 文件里 GENERAL 大项下的 logfile
logfile ""
改为
logfile /opt/redis/redis.log
重启 Redis 后,
$ ls -alt
total 88
-rw-r--r-- 1 root root 23236 Jun 24 22:16 redis.log
drwxr-xr-x 3 root root 4096 Jun 24 22:16 .
-rw-r--r-- 1 root root 1167 Jun 24 22:16 dump.rdb
-rw-r--r-- 1 root root 45413 Jun 24 20:17 6379.conf
drwxr-xr-x 2 root root 4096 Jun 21 16:02 bin
drwxr-xr-x 18 webapp root 4096 Jun 21 15:57 ..
6. Redis 服务关不掉的问题
$ sudo service redis stop
redis_6379 does not exist, process is not running
可以先将 redis 进程 kill 掉,然后找到 6379.conf
pidfile /var/run/redis.pid
改为:
pidfile /var/run/redis_6379.pid
找到 /etc/init.d/redis
$CLIEXEC -p $REDISPORT shutdown
改为:
$CLIEXEC -p $REDISPORT -a defonds
注意红色部分是你的 redis 的授权密码(上文第 4 步里所述)。这样,sudo service redis start 服务启动之后,用 sudo service redis stop 就可以将服务关闭了。
参考资料
- Redis Download
- Redis Quick Start
- Redhat5.8 环境下编译安装 Redis 并将其注册为系统服务
- shutdown redis-server from command line