美文网首页
centos7 安装redis5.0.4(centos8兼容)

centos7 安装redis5.0.4(centos8兼容)

作者: 本然酋长 | 来源:发表于2019-10-07 21:23 被阅读0次

    安装过程

    这次安装的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兼容)

          本文链接:https://www.haomeiwen.com/subject/eoaiyctx.html