银河麒麟V10ServerSP3中Redis7源码编译与安装详细教程
银河麒麟V10ServerSP3中Redis7源码编译与安装详细教程
文章目录
- 银河麒麟V10ServerSP3中Redis7源码编译与安装详细教程
- 1. 下载
- 2. 安装过程
- 1. 解压
- 2. 编译源码
- 3. 测试编译结果(可选)
- 4. 安装Redis
- 5. 安装位置
- 6. 复制配置文件
- 7. 修改redis.conf文件
- 8. 启动Redis服务
- 9. 客户端测试
- 10. 设置开机自启动
- 3. 开启远程访问
- 1. 编辑redis.conf
- 2. 开启防火墙
- 3.测试远程连接
1. 下载
官网
github地址
github中Redis源码直接下载地址
本下载的版本为redis-7.4.1.tar.gz
2. 安装过程
1. 解压
[root@localhost ~]# cd /opt/mysoftware/
[root@localhost mysoftware]# ll
总用量 4704
drwxr-xr-x 2 root root 27 12月 5 00:50 dm8
drwxr-xr-x 9 502 games 186 12月 5 00:54 nginx-1.26.2
-rw-r--r-- 1 root root 1244789 12月 5 00:51 nginx-1.26.2.tar.gz
-rw-r--r-- 1 root root 3567859 12月 5 01:49 redis-7.4.1.tar.gz
[root@localhost mysoftware]# tar -zxvf redis-7.4.1.tar.gz
redis-7.4.1/
redis-7.4.1/.codespell/
redis-7.4.1/.codespell/.codespellrc
redis-7.4.1/.codespell/requirements.txt
redis-7.4.1/.codespell/wordlist.txt
redis-7.4.1/.gitattributes
redis-7.4.1/.github/
..... # 中间内容过多这里省略显示
.....
redis-7.4.1/utils/req-res-validator/requirements.txt
redis-7.4.1/utils/speed-regression.tcl
redis-7.4.1/utils/srandmember/
redis-7.4.1/utils/srandmember/README.md
redis-7.4.1/utils/srandmember/showdist.rb
redis-7.4.1/utils/srandmember/showfreq.rb
redis-7.4.1/utils/systemd-redis_multiple_servers@.service
redis-7.4.1/utils/systemd-redis_server.service
redis-7.4.1/utils/tracking_collisions.c
redis-7.4.1/utils/whatisdoing.sh
[root@localhost mysoftware]#
2. 编译源码
# 1. 进入到解压后的源码目录
[root@localhost ~]# cd /opt/mysoftware/redis-7.4.1/
[root@localhost redis-7.4.1]# ll
总用量 280
-rw-rw-r-- 1 root root 10420 10月 3 03:04 00-RELEASENOTES
-rw-rw-r-- 1 root root 51 10月 3 03:04 BUGS
-rw-rw-r-- 1 root root 5023 10月 3 03:04 CODE_OF_CONDUCT.md
-rw-rw-r-- 1 root root 7178 10月 3 03:04 CONTRIBUTING.md
drwxrwxr-x 8 root root 133 10月 3 03:04 deps
-rw-rw-r-- 1 root root 11 10月 3 03:04 INSTALL
-rw-rw-r-- 1 root root 37493 10月 3 03:04 LICENSE.txt
-rw-rw-r-- 1 root root 151 10月 3 03:04 Makefile
-rw-rw-r-- 1 root root 6888 10月 3 03:04 MANIFESTO
-rw-rw-r-- 1 root root 23845 10月 3 03:04 README.md
-rw-rw-r-- 1 root root 108981 10月 3 03:04 redis.conf
-rw-rw-r-- 1 root root 1805 10月 3 03:04 REDISCONTRIBUTIONS.txt
-rwxrwxr-x 1 root root 279 10月 3 03:04 runtest
-rwxrwxr-x 1 root root 283 10月 3 03:04 runtest-cluster
-rwxrwxr-x 1 root root 1804 10月 3 03:04 runtest-moduleapi
-rwxrwxr-x 1 root root 285 10月 3 03:04 runtest-sentinel
-rw-rw-r-- 1 root root 1480 10月 3 03:04 SECURITY.md
-rw-rw-r-- 1 root root 14700 10月 3 03:04 sentinel.conf
drwxrwxr-x 4 root root 8192 10月 3 03:04 src
drwxrwxr-x 11 root root 199 10月 3 03:04 tests
-rw-rw-r-- 1 root root 3628 10月 3 03:04 TLS.md
drwxrwxr-x 9 root root 4096 10月 3 03:04 utils
## 2. 执行 make 命令进行编译
[root@localhost redis-7.4.1]# make
cd src && make all
make[1]: 进入目录“/opt/mysoftware/redis-7.4.1/src”
CC Makefile.dep
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info ...
(cd ../deps && make distclean)
make[2]: 进入目录“/opt/mysoftware/redis-7.4.1/deps”
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(cd hdr_histogram && make clean) > /dev/null || true
(cd fpconv && make clean) > /dev/null || true
(rm -f .make-*)
make[2]: 离开目录“/opt/mysoftware/redis-7.4.1/deps”
(cd modules && make clean)
make[2]: 进入目录“/opt/mysoftware/redis-7.4.1/src/modules”
rm -rf *.xo *.so
make[2]: 离开目录“/opt/mysoftware/redis-7.4.1/src/modules”
(cd ../tests/modules && make clean)
make[2]: 进入目录“/opt/mysoftware/redis-7.4.1/tests/modules”
.....
.....
===============================================================================
jemalloc version : 5.3.0-0-g0
library revision : 2
CONFIG : --disable-cxx --with-version=5.3.0-0-g0 --with-lg-quantum=3 --disable-cache-oblivious --with-jemalloc-prefix=je_ CFLAGS= LDFLAGS=
CC : gcc
CONFIGURE_CFLAGS : -std=gnu11 -Wall -Wextra -Wsign-compare -Wundef -Wno-format-zero-length -Wpointer-arith -Wno-missing-braces -Wno-missing-field-initializers -Wno-missing-attributes -pipe -g3 -fvisibility=hidden -Wimplicit-fallthrough -O3 -funroll-loops
SPECIFIED_CFLAGS :
EXTRA_CFLAGS :
CPPFLAGS : -D_GNU_SOURCE -D_REENTRANT
CXX :
CONFIGURE_CXXFLAGS :
SPECIFIED_CXXFLAGS :
EXTRA_CXXFLAGS :
LDFLAGS :
EXTRA_LDFLAGS :
DSO_LDFLAGS : -shared -Wl,-soname,$(@F)
LIBS : -lm -pthread -ldl
RPATH_EXTRA :
XSLTPROC : /usr/bin/xsltproc
XSLROOT : /usr/share/sgml/docbook/xsl-stylesheets
PREFIX : /usr/local
BINDIR : /usr/local/bin
DATADIR : /usr/local/share
INCLUDEDIR : /usr/local/include
LIBDIR : /usr/local/lib
MANDIR : /usr/local/share/man
srcroot :
abs_srcroot : /opt/mysoftware/redis-7.4.1/deps/jemalloc/
objroot :
abs_objroot : /opt/mysoftware/redis-7.4.1/deps/jemalloc/
JEMALLOC_PREFIX : je_
JEMALLOC_PRIVATE_NAMESPACE
: je_
install_suffix :
malloc_conf :
documentation : 1
shared libs : 1
static libs : 1
autogen : 0
debug : 0
stats : 1
experimental_smallocx : 0
prof : 0
prof-libunwind : 0
prof-libgcc : 0
prof-gcc : 0
fill : 1
utrace : 0
xmalloc : 0
log : 0
lazy_lock : 0
cache-oblivious : 0
cxx : 0
===============================================================================
cd jemalloc && make lib/libjemalloc.a
make[3]: 进入目录“/opt/mysoftware/redis-7.4.1/deps/jemalloc”
gcc -std=gnu11 -Wall -Wextra -Wsign-compare -Wundef -Wno-format-zero-length -Wpointer-arith -Wno-missing-braces -Wno-missing-
.....
....
make[3]: 离开目录“/opt/mysoftware/redis-7.4.1/deps/jemalloc”
make[2]: 离开目录“/opt/mysoftware/redis-7.4.1/deps”
CC threads_mngr.o
CC adlist.o
CC quicklist.o
CC ae.o
CC anet.o
CC dict.o
CC ebuckets.o
CC mstr.o
CC kvstore.o
CC server.o
CC sds.o
CC zmalloc.o
CC lzf_c.o
CC lzf_d.o
CC pqsort.o
CC zipmap.o
CC sha1.o
CC ziplist.o
CC release.o
CC networking.o
CC util.o
CC object.o
CC db.o
CC replication.o
CC rdb.o
CC t_string.o
CC t_list.o
CC t_set.o
CC t_zset.o
CC t_hash.o
CC config.o
CC aof.o
CC pubsub.o
CC multi.o
CC debug.o
CC sort.o
CC intset.o
CC syncio.o
CC cluster.o
CC cluster_legacy.o
CC crc16.o
CC endianconv.o
CC slowlog.o
CC eval.o
CC bio.o
CC rio.o
CC rand.o
CC memtest.o
CC syscheck.o
CC crcspeed.o
CC crc64.o
CC bitops.o
CC sentinel.o
CC notify.o
CC setproctitle.o
CC blocked.o
CC hyperloglog.o
CC latency.o
CC sparkline.o
CC redis-check-rdb.o
CC redis-check-aof.o
CC geo.o
CC lazyfree.o
CC module.o
CC evict.o
CC expire.o
CC geohash.o
CC geohash_helper.o
CC childinfo.o
CC defrag.o
CC siphash.o
CC rax.o
CC t_stream.o
CC listpack.o
CC localtime.o
CC lolwut.o
CC lolwut5.o
CC lolwut6.o
CC acl.o
CC tracking.o
CC socket.o
CC tls.o
CC sha256.o
CC timeout.o
CC setcpuaffinity.o
CC monotonic.o
CC mt19937-64.o
CC resp_parser.o
CC call_reply.o
CC script_lua.o
CC script.o
CC functions.o
CC function_lua.o
CC commands.o
CC strl.o
CC connection.o
CC unix.o
CC logreqres.o
LINK redis-server
INSTALL redis-sentinel
CC redis-cli.o
CC redisassert.o
CC cli_common.o
CC cli_commands.o
LINK redis-cli
CC redis-benchmark.o
LINK redis-benchmark
INSTALL redis-check-rdb
INSTALL redis-check-aof
Hint: It's a good idea to run 'make test' ;)
make[1]: 离开目录“/opt/mysoftware/redis-7.4.1/src”
[root@localhost redis-7.4.1]#
3. 测试编译结果(可选)
如果你想在安装前测试编译好的Redis是否正常工作,可以运行测试套件。
Last login: Thu Dec 5 01:53:01 2024 from 192.168.31.12
[root@localhost ~]# cd /opt/mysoftware/redis-7.4.1/
[root@localhost redis-7.4.1]# pwd
/opt/mysoftware/redis-7.4.1
[root@localhost redis-7.4.1]# make test
cd src && make test
make[1]: 进入目录“/opt/mysoftware/redis-7.4.1/src”
CC Makefile.dep
CC release.o
LINK redis-server
INSTALL redis-check-aof
LINK redis-cli
LINK redis-benchmark
Cleanup: may take some time... OK
Starting test server at port 21079
....
....
!!! WARNING The following tests failed:
*** [err]: Active defrag - AOF loading in tests/unit/memefficiency.tcl
Expected 59 <= 40 (context: type eval line 37 cmd {assert {$max_latency <= 40}} proc ::test)
Cleanup: may take some time... OK
make[1]: *** [Makefile:476:test] 错误 1
make[1]: 离开目录“/opt/mysoftware/redis-7.4.1/src”
make: *** [Makefile:6:test] 错误 2
[root@localhost redis-7.4.1]#
# 上面错误就是鄙视你的配置太低了,因为在虚拟机中测试的,不影响
4. 安装Redis
编译完成后,使用make install
命令安装Redis。这将会把Redis二进制文件安装到系统的默认路径下
[root@localhost ~]# cd /opt/mysoftware/redis-7.4.1/
[root@localhost redis-7.4.1]# pwd
/opt/mysoftware/redis-7.4.1
[root@localhost redis-7.4.1]# make install
cd src && make install
make[1]: 进入目录“/opt/mysoftware/redis-7.4.1/src”
INSTALL redis-sentinel
INSTALL redis-check-rdb
Hint: It's a good idea to run 'make test' ;)
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
make[1]: 离开目录“/opt/mysoftware/redis-7.4.1/src”
[root@localhost redis-7.4
5. 安装位置
Redis安装完成后在 /usr/local/bin/
目录下可查看
[root@localhost redis-7.4.1]# whereis redis
redis:
[root@localhost redis-7.4.1]# cd /usr/local/bin/
[root@localhost bin]# ll
总用量 30296
-rwxr-xr-x 1 root root 7003992 12月 5 16:28 redis-benchmark
lrwxrwxrwx 1 root root 12 12月 5 16:28 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root 12 12月 5 16:28 redis-check-rdb -> redis-server
-rwxr-xr-x 1 root root 7864432 12月 5 16:28 redis-cli
lrwxrwxrwx 1 root root 12 12月 5 16:28 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 16148928 12月 5 16:28 redis-server
[root@localhost bin]#
6. 复制配置文件
Redis的配置文件在源码目录下可找到,如redis.conf
与sentinel.conf
- 查看源码下的配置文件
[root@localhost ~]# cd /opt/mysoftware/redis-7.4.1/
[root@localhost redis-7.4.1]# ll
总用量 284
-rw-rw-r-- 1 root root 10420 10月 3 03:04 00-RELEASENOTES
-rw-rw-r-- 1 root root 51 10月 3 03:04 BUGS
-rw-rw-r-- 1 root root 5023 10月 3 03:04 CODE_OF_CONDUCT.md
-rw-rw-r-- 1 root root 7178 10月 3 03:04 CONTRIBUTING.md
drwxrwxr-x 8 root root 201 12月 5 01:53 deps
-rw-rw-r-- 1 root root 11 10月 3 03:04 INSTALL
-rw-rw-r-- 1 root root 37493 10月 3 03:04 LICENSE.txt
-rw-rw-r-- 1 root root 151 10月 3 03:04 Makefile
-rw-rw-r-- 1 root root 6888 10月 3 03:04 MANIFESTO
-rw-rw-r-- 1 root root 23845 10月 3 03:04 README.md
-rw-rw-r-- 1 root root 108981 10月 3 03:04 redis.conf
-rw-rw-r-- 1 root root 1805 10月 3 03:04 REDISCONTRIBUTIONS.txt
-rwxrwxr-x 1 root root 279 10月 3 03:04 runtest
-rwxrwxr-x 1 root root 283 10月 3 03:04 runtest-cluster
-rwxrwxr-x 1 root root 1804 10月 3 03:04 runtest-moduleapi
-rwxrwxr-x 1 root root 285 10月 3 03:04 runtest-sentinel
-rw-rw-r-- 1 root root 1480 10月 3 03:04 SECURITY.md
-rw-rw-r-- 1 root root 14700 10月 3 03:04 sentinel.conf
drwxrwxr-x 4 root root 12288 12月 5 16:28 src
drwxrwxr-x 11 root root 199 10月 3 03:04 tests
-rw-rw-r-- 1 root root 3628 10月 3 03:04 TLS.md
drwxrwxr-x 9 root root 4096 10月 3 03:04 utils
[root@localhost redis-7.4.1]#
- 将配置文件复制到合适位置
# 1.在/opt目录下新建redis目录
[root@localhost opt]# mkdir redis
# 2. 拷贝redis配置
[root@localhost redis-7.4.1]# cp *.conf /opt/redis/
[root@localhost redis-7.4.1]
# 3. 查看配置文件
[root@localhost opt]# cd redis/
[root@localhost redis]# ll
总用量 124
-rw-r--r-- 1 root root 108981 12月 5 16:39 redis.conf
-rw-r--r-- 1 root root 14700 12月 5 16:39 sentinel.conf
[root@localhost redis]#
7. 修改redis.conf文件
根据你的需求编辑
/opt/redis/redis.conf
文件。例如,设置绑定的IP地址、端口号、是否作为守护进程运行等。Redis 4.0 及以上版本默认启用了保护模式(
protected-mode
)。如果客户端尝试连接但没有提供密码,并且服务器正在监听非本地地址,则会拒绝连接。如果你确实需要远程访问,你应该禁用保护模式或者设置密码。要禁用保护模式,将protected-mode
设置为no
。
# redis.conf默认
bind 127.0.0.1 -::1
protected-mode yes
# 修改后
# bind 127.0.0.1 -::1 # 注释这一行
protected-mode no # 这里将默认的yes改为no
8. 启动Redis服务
启动命令redis-server /opt/redis/redis.conf
[root@localhost ~]# redis-server /opt/redis/redis.conf
54696:C 05 Dec 2024 16:48:04.988 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
54696:C 05 Dec 2024 16:48:04.988 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
54696:C 05 Dec 2024 16:48:04.988 * Redis version=7.4.1, bits=64, commit=00000000, modified=1, pid=54696, just started
54696:C 05 Dec 2024 16:48:04.988 * Configuration loaded
54696:M 05 Dec 2024 16:48:04.988 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis Community Edition
.-`` .-```. ```\/ _.,_ ''-._ 7.4.1 (00000000/1) 64 bit
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 54696
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
54696:M 05 Dec 2024 16:48:04.990 * Server initialized
54696:M 05 Dec 2024 16:48:04.990 * Ready to accept connections tcp
9. 客户端测试
[root@localhost ~]# redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379>
10. 设置开机自启动
如果你希望Redis在系统启动时自动运行,可以创建一个systemd服务文件或使用其他初始化系统的方法。例如,创建一个名为redis.service
的systemd服务文件并放置在/etc/systemd/system/
目录下,
- 查看
/etc/systemd/system下的问题就
[root@localhost systemd]# cd /etc/systemd/system/
[root@localhost system]# ll
总用量 4
drwxr-xr-x 2 root root 31 12月 3 20:29 bluetooth.target.wants
lrwxrwxrwx 1 root root 37 12月 3 20:27 cron.service -> /usr/lib/systemd/system/crond.service
lrwxrwxrwx 1 root root 37 12月 3 20:27 ctrl-alt-del.target -> /usr/lib/systemd/system/reboot.target
lrwxrwxrwx 1 root root 41 12月 3 20:29 dbus-org.bluez.service -> /usr/lib/systemd/system/bluetooth.service
lrwxrwxrwx 1 root root 41 12月 3 20:29 dbus-org.fedoraproject.FirewallD1.service -> /usr/lib/systemd/system/firewalld.service
lrwxrwxrwx 1 root root 44 12月 3 20:28 dbus-org.freedesktop.ModemManager1.service -> /usr/lib/systemd/system/ModemManager.service
lrwxrwxrwx 1 root root 57 12月 3 20:29 dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
lrwxrwxrwx 1 root root 40 12月 3 20:31 default.target -> /usr/lib/systemd/system/graphical.target
lrwxrwxrwx 1 root root 39 12月 3 20:28 display-manager.service -> /usr/lib/systemd/system/lightdm.service
drwxr-xr-x 2 root root 32 12月 3 20:27 getty.target.wants
drwxr-xr-x 2 root root 88 12月 3 20:35 graphical.target.wants
drwxr-xr-x 2 root root 4096 12月 4 18:12 multi-user.target.wants
drwxr-xr-x 2 root root 48 12月 3 20:29 network-online.target.wants
drwxr-xr-x 2 root root 26 12月 3 20:29 printer.target.wants
drwxr-xr-x 2 root root 31 12月 3 20:29 remote-fs.target.wants
drwxr-xr-x 2 root root 48 12月 3 20:29 sockets.target.wants
drwxr-xr-x 2 root root 62 12月 3 20:29 sysinit.target.wants
drwxr-xr-x 2 root root 64 12月 3 20:29 sysstat.service.wants
lrwxrwxrwx 1 root root 9 3月 22 2022 timedatex.service -> /dev/null
drwxr-xr-x 2 root root 33 12月 3 20:29 timers.target.wants
[root@localhost system]#
- 注册Redis开机自启动服务
新建vim /etc/systemd/system/redis.service
,内容如下
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=root
Group=root
ExecStart=/usr/local/bin/redis-server /opt/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
- 启用服务
systemctl enable redis.service
systemctl start redis.service
[root@localhost system]# systemctl enable redis.service
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /etc/systemd/system/redis.service.
[root@localhost system]# systemctl start redis.service
[root@localhost system]#
3. 开启远程访问
- 编辑
/opt/redis/redis.conf
文件- 修改绑定IP地址
- 关闭保护模式
- 设置密码(推荐)
- 编辑完
redis.conf
文件后重启服务- 开放端口
1. 编辑redis.conf
- redis7.4.1安装后,默认的配置如下
# redis.conf默认
bind 127.0.0.1 -::1
protected-mode yes
# requirepass foobared
- 配置可远程访问
# 注释此行,或改成 bind 0.0.0.0
# bind 127.0.0.1 -::1
# 将 protected-mode yes 改为如下
protected-mode no
# 打开 requirepass foobared 注释,并设置密码为 myRedisDb123
requirepass myRedisDb123
2. 开启防火墙
# 开放6379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
3.测试远程连接
从另一台机器上,使用 redis-cli 或其他Redis客户端工具测试连接。请记得替换 和 your_strong_password 为你自己的服务器IP和设置的密码。
redis-cli连接命令redis-cli -h <host> -p 6379 -a your_password
# 如
redis-cli -h 192.168.31.100 -p 6379 -a myRedisDb123