Linux安裝Redis實現(xiàn)過程及報錯解決方案
今天安裝redis出現(xiàn)些之前安裝不曾出現(xiàn)錯誤,一并在此做個記錄
一、安裝redis及出現(xiàn)錯誤
首先下載redis,官方下載地址頁面:https://redis.io/download
我們這里選擇穩(wěn)定版6.0.1版本
正常安裝步驟如下:
[root@localhost ~]# yum install gcc[root@localhost ~]# cd /usr/local[root@localhost local]# wget http://download.redis.io/releases/redis-6.0.1.tar.gz[root@localhost local]# tar -xvf redis-6.0.1.tar.gz[root@localhost local]# cd /usr/local/redis-6.0.1/[root@localhost redis-6.0.1]# make PREFIX=/usr/local/redis install
這里報了如下錯誤
make[1]: *** [server.o] 錯誤 1make[1]: 離開目錄“/usr/redis-6.0.1/src”make: *** [all] 錯誤 2
server.c:2402:11: 錯誤:‘struct redisServer’沒有名為‘a(chǎn)ssert_file’的成員server.assert_file = '<no file>';^server.c:2403:11: 錯誤:‘struct redisServer’沒有名為‘a(chǎn)ssert_line’的成員server.assert_line = 0;^server.c:2404:11: 錯誤:‘struct redisServer’沒有名為‘bug_report_start’的成員server.bug_report_start = 0;^server.c:2405:11: 錯誤:‘struct redisServer’沒有名為‘watchdog_period’的成員server.watchdog_period = 0;^server.c:2411:11: 錯誤:‘struct redisServer’沒有名為‘lua_always_replicate_commands’的成員server.lua_always_replicate_commands = 1;^server.c: 在函數(shù)‘restartServer’中:server.c:2464:32: 錯誤:‘struct redisServer’沒有名為‘maxclients’的成員for (j = 3; j < (int)server.maxclients + 1024; j++) {^server.c: 在函數(shù)‘a(chǎn)djustOpenFilesLimit’中:server.c:2491:29: 錯誤:‘struct redisServer’沒有名為‘maxclients’的成員rlim_t maxfiles = server.maxclients+CONFIG_MIN_RESERVED_FDS;^server.c:2497:15: 錯誤:‘struct redisServer’沒有名為‘maxclients’的成員server.maxclients = 1024-CONFIG_MIN_RESERVED_FDS;^server.c:2529:53: 錯誤:‘struct redisServer’沒有名為‘maxclients’的成員unsigned int old_maxclients = server.maxclients;^server.c:2530:23: 錯誤:‘struct redisServer’沒有名為‘maxclients’的成員server.maxclients = bestlimit-CONFIG_MIN_RESERVED_FDS;^server.c:2554:59: 錯誤:‘struct redisServer’沒有名為‘maxclients’的成員(unsigned long long) bestlimit, server.maxclients);^server.c: 在函數(shù)‘checkTcpBacklogSettings’中:server.c:2574:48: 錯誤:‘struct redisServer’沒有名為‘tcp_backlog’的成員if (somaxconn > 0 && somaxconn < server.tcp_backlog) {^server.c:2575:171: 錯誤:‘struct redisServer’沒有名為‘tcp_backlog’的成員serverLog(LL_WARNING,'WARNING: The TCP backlog setting of %d cannot be enforced because /proc/sys/net /core/somaxconn is set to the lower value of %d.', server.tcp_backlog, somaxconn);
解決辦法:升級gcc版本
[root@localhost redis-6.0.1]# gcc -v # 查看gcc版本[root@localhost redis-6.0.1]# yum -y install centos-release-scl # 升級到9.1版本[root@localhost redis-6.0.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils[root@localhost redis-6.0.1]# scl enable devtoolset-9 bash以上為臨時啟用,如果要長期使用gcc 9.1的話:[root@localhost redis-6.0.1]# echo 'source /opt/rh/devtoolset-9/enable' >>/etc/profile
再執(zhí)行編譯:
[root@mmjredis redis-6.0.1]# make PREFIX=/usr/local/redis install
安裝成功會出現(xiàn):Hint: It’s a good idea to run ’make test’ 😉
我們執(zhí)行一下make test來進行測試一下
出現(xiàn)了如下錯誤:
[root@localhost redis-6.0.1]# make testcd src && make testmake[1]: 進入目錄“/usr/redis-6.0.1/src”CC Makefile.depmake[1]: 離開目錄“/usr/redis-6.0.1/src”make[1]: 進入目錄“/usr/redis-6.0.1/src”You need tcl 8.5 or newer in order to run the Redis testmake[1]: *** [test] 錯誤 1make[1]: 離開目錄“/usr/redis-6.0.1/src”make: *** [test] 錯誤 2
解決辦法:
[root@localhost redis-6.0.1]# yum install tcl[root@localhost redis-6.0.1]# make test
測試成功如下:
先運行redis試一下:
[root@localhost redis-6.0.1]# /usr/local/redis-6.0.1/src/redis-server /usr/local/redis-6.0.1/redis.conf32101:C 13 May 2020 17:01:48.248 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo32101:C 13 May 2020 17:01:48.248 # Redis version=6.0.1, bits=64, commit=00000000, modified=0, pid=32101, just started32101:C 13 May 2020 17:01:48.248 # Configuration loaded32101:M 13 May 2020 17:01:48.249 * Increased maximum number of open files to 10032 (it was originally set to 1024)._._ _.-``__ ’’-._ _.-`` `. `_. ’’-._ Redis 6.0.1 (00000000/0) 64 bit .-`` .-```. ```/ _.,_ ’’-._ ( ’ , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|’` _.-’| Port: 6379 | `-._ `._ / _.-’ | PID: 32101 `-._ `-._ `-./ _.-’ _.-’ |`-._`-._ `-.__.-’ _.-’_.-’| | `-._`-._ _.-’_.-’ | http://redis.io `-._ `-._`-.__.-’_.-’ _.-’ |`-._`-._ `-.__.-’ _.-’_.-’| | `-._`-._ _.-’_.-’ | `-._ `-._`-.__.-’_.-’ _.-’ `-._ `-.__.-’ _.-’ `-._ _.-’ `-.__.-’
二、后臺啟動
簡單修改后臺啟動
[root@localhost redis-6.0.1]# vim redis.conf
daemonize no 改成 daemonize yes
再來運行一下
[root@localhost redis-6.0.1]# /usr/redis-6.0.1/src/redis-server /usr/redis-6.0.1/redis.conf30385:C 13 May 2020 16:57:58.918 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo30385:C 13 May 2020 16:57:58.918 # Redis version=6.0.1, bits=64, commit=00000000, modified=0, pid=30385, just started30385:C 13 May 2020 16:57:58.918 # Configuration loaded
后臺運行成功,我們查看一下,并終止程序
[root@localhost redis-6.0.1]# ps -aux|grep redis| grep -v greproot 29836 0.0 0.0 162416 7912 ? Ssl 16:56 0:00 /usr/redis-6.0.1/src/redis-server 127.0.0.1:6379[root@localhost redis-6.0.1]# kill -9 29836
我們這里用到的是用后臺systemctl啟動redis
首先把redis加入service服務
vim /lib/systemd/system/redis.service
寫入
[Unit]Description=redisAfter=network.target
[Service]Type=forkingPIDFile=/var/run/redis_6379.pidExecStart=/usr/local/redis-6.0.1/src/redis-server /usr/local/redis-6.0.1/etc/redis.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true
[Install]WantedBy=multi-user.target
注意路徑問題,以及PIDFile的路徑對應的是redis-6.0.1/src/redis-server里面的PIDFile
wq保存退出即可
接著運行以下
[root@localhost redis-6.0.1]# systemctl enable redis.service # 加入開機啟動
[root@localhost redis-6.0.1]# systemctl is-enabled redis.service # 查看開機是否啟動成功enabled
[root@localhost redis-6.0.1]# systemctl start redis #開啟redis服務
[root@localhost redis-6.0.1]# systemctl status redis //查看redis運行狀態(tài)
如果啟動出現(xiàn)問題,可以通過systemctl status redis來查看日志修復
如圖已經(jīng)啟動成功
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關文章:
1. Win10系統(tǒng)pci內(nèi)存控制器感嘆號怎么解決?2. win10我的電腦怎么放在桌面呢?3. WinXP如何保存網(wǎng)頁圖片?保存網(wǎng)頁圖片的詳細方法4. Win10 20h2 u盤安裝教程 如何用U盤安裝Win10 20h2最新版5. Unix是什么?Unix和Linux有什么區(qū)別?6. FreeBSD10安裝內(nèi)核源代碼方法講解7. Win7系統(tǒng)開機密碼過期怎么解決?8. Win10新補丁KB4023057做了哪些改進?9. WinXP系統(tǒng)cad光標怎么設置?WinXP系統(tǒng)設置cad十字光標大小方法10. 華為筆記本如何重裝系統(tǒng)win10?華為筆記本重裝Win10系統(tǒng)步驟教程
