centos7 安装redis5.0.4(centos8兼容)

安装过程

这次安装的redis是最新的大版本,5.0.4 。redis的安装相对比较简单,在官网下到相关的安装包,解压,我放的目录是/opt/redis 。然后安装gcc

yum install gcc make -y

然后执行make test,看是否可以构建成功。
我执行后提示我,缺号tcl8.5或者更新的版本。之前我是有存下来tcl8.5的安装包的,这次我发现yum有tcl的8.5版本,试试吧。

yum install tcl #看清楚了版本再安装最低要求8.5版本

再次make test,报错Executing test client: couldn't execute "src/redis-benchmark": no such file or directory.
couldn't execute "src/redis-benchmark": no such file or directory
网上说进行make distclear ,后来发现,他是test通过后,install报错时使用的命令。我怀疑这和我装的tcl有关,所以,我把之前yum的版本卸载了

yum remove tcl

然后安装我常安装的tcl版本,8.6,命令如下:

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz  
tar xzvf tcl8.6.1-src.tar.gz
cd tcl8.6.1/unix/  
./configure
make
make install  

然后,还是不行。
于是我决定,先make再说吧。于是,我在make的结果中看到了benchmakr.o。那我再试试make test咧。嗯,成功了。TNND。。。所以,我无法证明yum自身的tcl是不ok的,而且我还把我的虚拟机从单核升为了双核,也不知道有没有影响,以后有机会再说吧。

make install # 安装搞定

配置

在软件根目录下面有个redis.conf文件,是一个范例的配置文件,可以直接使用,不过我们需要进行一些调整,先复制出来一个吧

mkdir /etc/redis
cp redis.conf /etc/redis/6379.conf

变更的内容有:

daemonize yes
bind 0.0.0.0 
requirepass 123456

至此,服务已可用。为了重启服务器的时候,少手动启动一些服务,接下来我们配置开机启动。

开机启动

需要注意的是,我们这是centos7,和centos6的开机启动区别有些大。首先让我们创建启动用的服务文件 /lib/systemd/system/redis-6379.service

vim /lib/systemd/system/redis-6379.service

[Unit]
#描述服务
Description=redis-6379
#描述服务类别
After=network.target

[Service]
#forking是后台运行的形式
Type=forking
#服务启动的具体命令
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
#ExecReload为服务重启的具体命令
#ExecStop服务停止的具体命令

#true表示给服务分配独立的临时空间
PrivateTmp=true

[Install]
#设置为多用户
WantedBy=multi-user.target

systemctl enable redis-6379.service

需要注意的是

  • 上面的注释在实际使用时均需要去掉,否则会报错。
  • 命令中必须使用绝对路径,所有的环境变量和相对路径均是无效的。
  • 经过测试,虽然我没有设置stop命令,但是stop依然可以正确的关闭我的进程。

关于开机启动的一些补充信息

任务 旧指令 新指令
使某服务自动启动 chkconfig --level 3 redis-6379 on systemctl enable redis-6379.service
使某服务不自动启动 chkconfig --level 3 redis-6379 off systemctl disable redis-6379.service
检查服务状态 service redis-6379 status systemctl status redis-6379.service (服务详细信息) systemctl is-active redis-6379.service (仅显示是否 Active)
显示所有已启动的服务 chkconfig --list systemctl list-units --type=service
启动某服务 service redis-6379 start systemctl start redis-6379.service
停止某服务 service redis-6379 stop systemctl stop redis-6379.service
重启某服务 service redis-6379 restart systemctl restart redis-6379.service

After

表示如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之后启动。

Type

  • simple(默认值):ExecStart字段启动的进程为主进程
  • forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
  • oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
  • dbus:类似于simple,但会等待 D-Bus 信号后启动
  • notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
  • idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合

WantedBy

表示该服务所在的 Target。
Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,sshd 所在的 Target 是multi-user.target。
这个设置非常重要,因为执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。

后记

在后来使用centos8装redis的时候,参照这篇文章进行安装,很顺利。centos8里tcl库默认是8.6的。这次我直接用的yum里的。然后,make test依然是相同的错误。不过在make和make install之后再次执行,所有的测试通过。所以,tcl库可以用yum库的,同时make test要在安装完成之后进行才可以。

你可能感兴趣的:(centos7 安装redis5.0.4(centos8兼容))