CentOS 7.x下安装Redis

CentOS 7.x下安装Redis

本文主要介绍在centos 7.x下使用源码编译安装redis的过程以及可能出现的问题及其解决方法,废话不多说,直接开始。

第一步:下载Redis安装包

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

第二步:解压压缩包

tar -zxvf redis-5.0.3.tar.gz
# 将解压文件移动到/opt目录下并重命名为redis
sudo mv redis-5.0.3  /opt/redis
# 修改目录所属用户,假设用户为zhl
sudo chown -R zhl:zhl /opt/redis/

第三步:yum安装gcc依赖

sudo yum install -y gcc

第四步:编译安装与启动

cd /opt/redis
make MALLOC=libc
make install

跳转到redis源码目录,执行make命令进行编译,完成后再执行make install命令进行安装,安装程序会将redis安装到/usr/local/bin目录下,我们可以切换到该目录下执行如下命令启动:

cd /usr/local/bin
sudo ./redis-server

我们可以使用如下命令查看redis是否启动成功:

ps aux|grep redis

注意这里可能会出现一个错误,就是当我们想要关闭redis-server时,终端会报错导致我们无法关闭redis-server进程,这里我们需要使用kill命令来结束redis服务进程,如下所示:

sudo kill -9 <pid>

使用kill -9 命令强制关闭指定的pid所表示的进程。

第五步:修改redis默认配置
redis默认配置只能在本机进行redis连接,如果想要在远程连接redis,我们需要修改redis的默认配置文件:

# 注释掉bind 127.0.0.1这一行
#bind 127.0.0.1

关闭protected-mode yes改为no

protected-mode no

设置redis为守护进程开启
daemonize no 改为 daemonize yes

第六步:安装redis启动服务
每次启动redis都需要切换到安装目录并执行./redis-server十分麻烦,因此我们需要一个类似于windows的自启动服务。在redis中,我们可以借助于redis自带的install_server.sh工具进行service安装,如下所示:

cd /opt/redis/utils/
sudo ./install_server.sh

运行install_server.sh脚本后,我们可以按照屏幕提示,进行一步一步的安装service,如下所示:
在这里插入图片描述
如上图所示,我们按照提示进行安装,可以看到我们的redis服务的默认端口为6379,默认实例配置文件被安装在了/etc/redis目录下名为6739.conf,默认日志文件为/var/log/redis_6379.log,默认数据存放地址为/var/lib/redis/6379目录下,最后一步我们需要指定redis-server的路径,这里由于我们不是默认安装在/usr/local目录下的,所以程序报错了,提示我们找不到可执行文件,所以为了避免报错,在最后一步的时候,我们需要指定redis-server的安装位置,上文中提到,我们的redis-server在/usr/local/bin目录下,因此我们需要在 please select the redis executable path[] 后面输入 /usr/local/bin/redis-server,然后回车,就可以正常安装了。

安装完成后,我们的redis服务被安装在了/etc/init.d/目录下,默认名称为redis_6379,下面我们可以验证一下我们的service是否安装成功,如下所示:

service redis_6379 start
# 使用ps命令查看redis进程
ps aux|grep redis
# 或者使用
# service redis_6379 status

在上述操作中,如果我们使用非root用户安装并启动serivce时,在service redis_6379 status命令执行后,我们会遇到 cat :/var/run/redis_6379.pid: No such file or directory的错误,出现这个错误的原因是因为当前用户没有操作/var/run目录权限,导致redis无法找到pid文件。这里我的做法是修改默认的PID文件存放目录,并授权为其他用户权限,具体操作如下所示:

# 修改/etc/init.d/redis_6379
sudo vim /etc/init.d/redis_6379

主要修改redis_6379脚本中的PIDFILE=/var/run/redis_6379.pid,修改为PIDFILE=/var/redis/redis_6379.pid。然后我们要在/var目录下创建redis目录并授权,如下所示:

sudo mkdir -p /var/redis
sudo chown -R zhl:zhl /var/redis

这样做的好处是非root用户也能启动redis service。坏处是,如果服务器出现宕机、火灾等不可控情况,导致服务器关机,再次重启服务器的时候会报 /var/redis/run/redis_6379.pid exists, process is already running or crashed,这个错误是由于pid文件不是在闪存区域内的,所以导致机器重启后无法自动清除,这个时候我们只要手动清除redis_6379.pid文件即可,如下所示:

sudo rm -f /var/redis/redis_6379.pid

同样的道理,我们有可能还会遇到 Failed opening the RDB file dump.rdb (in server root dir /var/lib/redis/6379,这个问题也是由于权限问题导致,我们需要给用户授权 757即可:

sudo chmod 757 /var/lib/redis/6379

关闭redis的service

service redis_6379 stop

当我们想要停止redis service时,会报以下错误:

service redis stop
Stopping ...
OK
(error) NOAUTH Authentication required.
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...

问题的原因:由于我们的redis开启了认证机制,因此在关闭redis service时需要指定登录密码。
解决办法:修改/etc/init.d/redis_6379脚本,在脚本中添加如下内容:

sudo vim /etc/init.d/redis
$CLIEXEC -a "password" -p $REDISPORT shutdown

其中password即为redis的登录密码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值