在这里将整理出Redis在CentOS 7中安装的流程,并且可以使得开机时自启动Redis。
获取Redis
使用wget获取Redis安装包,因此需要提前在CentOS中安装好wget。
yum install wget -y
到Redis官网中获取软件包下载链接。
安装Redis
然后到CentOS中下载Redis。
wget https://github.com/redis/redis/archive/7.0.12.tar.gz
对安装包经行解压。
tar zxvf 7.0.12.tar.gz
进入解压文件下可以看到Makefile,可能是需要make一下。
因此需要安装make和gcc。
yum install make
yum install gcc
然后make一下。
经过漫长的等待终于好了。
到这里可以使用一些指令使用Redis了。但是我们需要使其开机自启动,因此还需要继续配置。
Redis配置与部署
首先,在刚刚的软件包当中有一份Redis的启动脚本。
可以看看这份脚本什么意思。
可以看出来这份脚本定义了Redis的start以及stop的操作,并且在脚本的最开始就规定了端口号、配置文件等。因此我们围绕这份脚本对Redis进行配置。
配置redis.conf
首先按照脚本CONF的路径检查一下有没有对应的conf文件,没有的话需要从安装包中复制一份redis.conf过去并且修改名字(我太懒了就直接用端口号当配置文件名了,当然如果集群的话这样也是不错的)。当然也可以修改脚本中CONF的路径。
cp redis.conf /etc/redis/6379.conf
对于redis.conf的配置这里列举出一些配置供参考。
# 所以地址均可用
bind 0.0.0.0
# 端口号检查
port 6379
# 守护线程, 可后台运行
daemonize yes
# Note that on modern Linux systems "/run/redis.pid" is more conforming
# and should be used instead.
# 要与脚本路径对应
pidfile /var/run/redis_6379.pid
# 日志文件存储位置
logfile "/var/log/redis.log"
# 数据库存放位置
dir /var/local/redis
接着我们可以把脚本重命名为redisd放到init.d当中。
cp redis_init_script /etc/init.d/redis
开机启动
怎么使redis开机启动呢?发个问答贴吧(bushi)
使用chkconfig将redis开机启动。
chkconfig redis on
chkconfig --list
启动选项
用service redis start启动redis。
这时候service redis只有start和stop指令选项。如何增加选项呢?发个问答贴吧(bushi)
记不记得在utils目录下还有一个redis_init_script.tpl,说是什么初始化模板?让我康康!
里面包含了start、stop、status、restart几个选项,那我们直接复制过去不就好了?试逝!
确实可以!
顺便看看开机启动怎么样。
Okk,大功告成~!
systemclt设置
既然有service控制redis,那么能否使用systemclt指令控制redis的状态呢?
在/etc/systemd/system在新建redis.service文件并且写入如下配置。
ps:近日发现这种设置方法会出错,原因是执行的路径应为绝对路径,一个思路是用redis-server的绝对路径去启动,怎么配自己去查一下;另一种是改进下,使用绝对路径(/sbin/service)去调用serivce以启动redis,即下面的配置方法。
vi /etc/systemd/system/redis.service
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
ExecStart=/sbin/service redis start
ExecReload=/sbin/service redis restart
ExecStop=/sbin/service redis stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
检验一下:
防火墙端口设置
如果外面程序想用到Linux机里的Redis服务,有两种方法:
1.关闭Linux的防火墙
2.指定端口允许通过
这里给出第二种方法:
firewall-cmd --zone=public --add-port=6379/tcp --permanent
systemctl restart firewalld