银河麒麟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内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐