• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    银河麒麟V10sp1服务器系统安装redis不能使用的快速解决办法

    我们在适配时,经常需要安装redis,但是在银河麒麟 V10sp1 服务器系统上安装使用 redis 的时候会有诸多问题,今天我们就来逐步分析解决一下。

    1. 配好外网,使用麒麟源安装redis:

    先在源里搜索一下redis,查看是否有该软件包:

    [root@172-17-102-254 ~]# yum search redis

    Last metadata expiration check: 1:46:38 ago on 2020年12月11日 星期五09时55分08秒.

    ================================================================================ Name Exactly Matched: redis =================================================================================

    redis.aarch64 : A persistent key-value database

    =============================================================================== Name Summary Matched: redis ================================================================================

    pcp-pmda-redis.aarch64 : Redis PCP metrics

    rsyslog-hiredis.aarch64 : Redis support for rsyslog

    hiredis-devel.aarch64 : Development files for hiredis

    hiredis.aarch64 : A minimalistic C client library for the Redis database

    python2-redis.noarch : The Python2 interface to the Redis key-value store

    python3-redis.noarch : The Python3 interface to the Redis key-value store

    确认有后,我们就可以开始安装了:

    yum install redis.aarch64

    2. 启动服务

    [root@172-17-102-254 ~]# systemctl start redis

    Job for redis.service failed because the control process exited with error code.

    See "systemctl status redis.service" and "journalctl -xe" for details.

    发现服务启动失败。

    3. 查看服务和日志,定位问题

    我们先来看服务的状态,看能不能获取到相关信息:

    [root@172-17-102-254 ~]# systemctl status redis.service

    ●redis.service - Redis persistent key-value database

    Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)

    Active: failed (Result: exit-code) since Fri 2020-12-11 13:40:56 CST; 3min 44s ago

    Process: 10223 ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd (code=exited, status=217/USER)

    Main PID: 10223 (code=exited, status=217/USER)

    12月11 13:40:56 172-17-102-254 systemd[1]: Starting Redis persistent key-value database...

    12月11 13:40:56 172-17-102-254 systemd[1]: redis.service: Main process exited, code=exited, status=217/USER

    12月11 13:40:56 172-17-102-254 systemd[1]: redis.service: Failed with result 'exit-code'.

    12月11 13:40:56 172-17-102-254 systemd[1]: Failed to start Redis persistent key-value database.

    查看状态没有获取到特别有用的信息,我们再来看系统日志/var/log/messages,发现有两处报错:

    a.没有日志路径,不能打开日志文件

    redis-server[23358]: *** FATAL CONFIG FILE ERROR ***

    redis-server[23358]: Reading the configuration file, at line 171

    redis-server[23358]: >>>'logfile /var/log/redis/redis.log'

    redis-server[23358]:Can't open the log file: No such file or directory

    发现系统/var/log/下没有redis目录,手动创建一个:

    [root@172-17-102-254 ~]# mkdir -p /var/log/redis

    b.跟redis的systemd服务的用户相关

    systemd[10355]: redis.service: Failed to determine user credentials: No such process

    systemd[10355]: redis.service: Failed at step USER spawning /usr/bin/redis-server: No such process

    我们再来看一下redis的systemd服务:

    [root@172-17-102-254 ~]# cat /lib/systemd/system/redis.service

    [Unit]

    Description=Redis persistent key-value database

    After=network.target

    [Service]

    ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd

    Type=notify

    User=redis

    Group=redis

    RuntimeDirectory=redis

    RuntimeDirectoryMode=0755

    [Install]

    WantedBy=multi-user.target

    可以看到,redis.service 服务是用 redis 用户来启动的,然而查看了/etc/passwd 和 /etc/shadow 文件,都没有 redis 用户的记录,我们来手动创建一个 redis 用户,并指定 shell 为 /usr/sbin/nologin:

    [root@172-17-102-254 ~]#useradd redis -s /usr/sbin/nologin

    并且,把刚刚创建的日志目录的属组改成redis:root:

    [root@172-17-102-254 ~]#chown -R redis:root /var/log/redis

    再来重启服务:systemctl restart redis,发现还是启动失败,继续看messages日志,发现有这一句:

    redis-server[10631]: 10631:C 11 Dec 14:15:22.548 # Fatal error,can't open config file '/etc/redis.conf'

    查看发现,redis的配置文件/etc/redis.conf的属组是root,我们将其改为redis:root。

    [root@172-17-102-254 ~]#chown redis:root /etc/redis.conf

    继续重启服务:systemctl restart redis,还是失败,而且系统日志messages里没有提供有效信息,有点头大。我们再来看下 /var/log/redis/redis.log,发现有一句报错:

    Can't chdir to '/var/lib/redis': No such file or directory

    我们来手动创建一下该目录,并修改属组:

    [root@172-17-102-254 ~]# mkdir -p /var/lib/redis
    
    [root@172-17-102-254 ~]# chown -R redis:root /var/lib/redis

    继续重启服务:systemctl restart redis,发现终于启动成功了,而且能正常使用。

    4. 总结

    要在银河麒麟v10sp1服务器系统上安装使用redis,有以下几个步骤需要祚:

    a. 添加好redis用户,并指定shell为nologin

    useradd redis -s /usr/sbin/nologin

    b. 配好外网,使用银河麒麟软件源安装redis:

    c. 创建redis的日志目录,并修改属组为redis:root:

    mkdir -p /var/log/redis
    
    chown -R redis:root /var/log/redis

    d. 创建redis的库目录,并修改属组为redis:root:

    mkdir -p /var/lib/redis
    
    chown -R redis:root

    e. 确认以下redis的配置文件/etc/redis.conf的属组是否为redis:root

    另外,经过测试发现,如果你想要把redis的服务以后台进程 daemon 的方式运行,可以修改配置文件 /etc/redis.conf,把其中的 daemonize 的选项由 no 改为 yes,并且 /lib/systemd/system/redis.service 文件里 Type 选项由 notify 改为 forKing,systemd 的分析,这里就不做过多介绍了。

    总而言之,要仔细看配置文件,碰到问题,需要多看日志文件来解决问题。

    到此这篇关于银河麒麟V10sp1服务器系统安装redis不能使用的快速解决办法的文章就介绍到这了,更多相关麒麟V10sp1服务器安装redis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Redis实现分布式Session管理的机制详解
    • kubernetes环境部署单节点redis数据库的方法
    • 使用lua+redis解决发多张券的并发问题
    • 使用docker搭建redis主从的方法步骤
    • 基于redis setIfAbsent的使用说明
    上一篇:使用lua+redis解决发多张券的并发问题
    下一篇:Redis的KEYS 命令千万不能乱用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    银河麒麟V10sp1服务器系统安装redis不能使用的快速解决办法 银河,麒麟,V10sp1,服务器,