我們?cè)谶m配時(shí),經(jīng)常需要安裝redis,但是在銀河麒麟 V10sp1 服務(wù)器系統(tǒng)上安裝使用 redis 的時(shí)候會(huì)有諸多問(wèn)題,今天我們就來(lái)逐步分析解決一下。
1. 配好外網(wǎng),使用麒麟源安裝redis:
先在源里搜索一下redis,查看是否有該軟件包:
[root@172-17-102-254 ~]# yum search redis
Last metadata expiration check: 1:46:38 ago on 2020年12月11日 星期五09時(shí)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
確認(rèn)有后,我們就可以開(kāi)始安裝了:
yum install redis.aarch64
2. 啟動(dòng)服務(wù)
[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.
發(fā)現(xiàn)服務(wù)啟動(dòng)失敗。
3. 查看服務(wù)和日志,定位問(wèn)題
我們先來(lái)看服務(wù)的狀態(tài),看能不能獲取到相關(guān)信息:
[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.
查看狀態(tài)沒(méi)有獲取到特別有用的信息,我們?cè)賮?lái)看系統(tǒng)日志/var/log/messages,發(fā)現(xiàn)有兩處報(bào)錯(cuò):
a.沒(méi)有日志路徑,不能打開(kāi)日志文件
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
發(fā)現(xiàn)系統(tǒng)/var/log/下沒(méi)有redis目錄,手動(dòng)創(chuàng)建一個(gè):
[root@172-17-102-254 ~]# mkdir -p /var/log/redis
b.跟redis的systemd服務(wù)的用戶相關(guān)
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
我們?cè)賮?lái)看一下redis的systemd服務(wù):
[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 服務(wù)是用 redis 用戶來(lái)啟動(dòng)的,然而查看了/etc/passwd 和 /etc/shadow 文件,都沒(méi)有 redis 用戶的記錄,我們來(lái)手動(dòng)創(chuàng)建一個(gè) redis 用戶,并指定 shell 為 /usr/sbin/nologin:
[root@172-17-102-254 ~]#useradd redis -s /usr/sbin/nologin
并且,把剛剛創(chuàng)建的日志目錄的屬組改成redis:root:
[root@172-17-102-254 ~]#chown -R redis:root /var/log/redis
再來(lái)重啟服務(wù):systemctl restart redis,發(fā)現(xiàn)還是啟動(dòng)失敗,繼續(xù)看messages日志,發(fā)現(xiàn)有這一句:
redis-server[10631]: 10631:C 11 Dec 14:15:22.548 # Fatal error,can't open config file '/etc/redis.conf'
查看發(fā)現(xiàn),redis的配置文件/etc/redis.conf的屬組是root,我們將其改為redis:root。
[root@172-17-102-254 ~]#chown redis:root /etc/redis.conf
繼續(xù)重啟服務(wù):systemctl restart redis,還是失敗,而且系統(tǒng)日志messages里沒(méi)有提供有效信息,有點(diǎn)頭大。我們?cè)賮?lái)看下 /var/log/redis/redis.log,發(fā)現(xiàn)有一句報(bào)錯(cuò):
Can't chdir to '/var/lib/redis': No such file or directory
我們來(lái)手動(dòng)創(chuàng)建一下該目錄,并修改屬組:
[root@172-17-102-254 ~]# mkdir -p /var/lib/redis
[root@172-17-102-254 ~]# chown -R redis:root /var/lib/redis
繼續(xù)重啟服務(wù):systemctl restart redis,發(fā)現(xiàn)終于啟動(dòng)成功了,而且能正常使用。
4. 總結(jié)
要在銀河麒麟v10sp1服務(wù)器系統(tǒng)上安裝使用redis,有以下幾個(gè)步驟需要祚:
a. 添加好redis用戶,并指定shell為nologin
useradd redis -s /usr/sbin/nologin
b. 配好外網(wǎng),使用銀河麒麟軟件源安裝redis:
c. 創(chuàng)建redis的日志目錄,并修改屬組為redis:root:
mkdir -p /var/log/redis
chown -R redis:root /var/log/redis
d. 創(chuàng)建redis的庫(kù)目錄,并修改屬組為redis:root:
mkdir -p /var/lib/redis
chown -R redis:root
e. 確認(rèn)以下redis的配置文件/etc/redis.conf的屬組是否為redis:root
另外,經(jīng)過(guò)測(cè)試發(fā)現(xiàn),如果你想要把redis的服務(wù)以后臺(tái)進(jìn)程 daemon 的方式運(yùn)行,可以修改配置文件 /etc/redis.conf,把其中的 daemonize 的選項(xiàng)由 no 改為 yes,并且 /lib/systemd/system/redis.service 文件里 Type 選項(xiàng)由 notify 改為 forKing,systemd 的分析,這里就不做過(guò)多介紹了。
總而言之,要仔細(xì)看配置文件,碰到問(wèn)題,需要多看日志文件來(lái)解決問(wèn)題。
到此這篇關(guān)于銀河麒麟V10sp1服務(wù)器系統(tǒng)安裝redis不能使用的快速解決辦法的文章就介紹到這了,更多相關(guān)麒麟V10sp1服務(wù)器安裝redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Redis實(shí)現(xiàn)分布式Session管理的機(jī)制詳解
- kubernetes環(huán)境部署單節(jié)點(diǎn)redis數(shù)據(jù)庫(kù)的方法
- 使用lua+redis解決發(fā)多張券的并發(fā)問(wèn)題
- 使用docker搭建redis主從的方法步驟
- 基于redis setIfAbsent的使用說(shuō)明