欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-28 12:38:07
我们在适配时,经常需要安装redis,但是在银河麒麟 v10sp1 服务器系统上安装使用 redis 的时候会有诸多问题,今天我们就来逐步分析解决一下。1. 配好外网,使用麒麟源安装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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!