本来以为是x86指令集,编译个redis还不是闭着眼睛敲指令就完事的事,结果还真是需要处理一下,以下为编译过程记录:
1.编译redis 6
上来就先报错.../deps/jemalloc/lib/libjemalloc.a:没有那个文件或目录
查了一下这个真不是国产处理器的锅,网上也有好多人遇到了这个问题,只不过不是在国产处理下出现的,结合前面测试的龙芯下的编译过程,直接怀疑config.guess和config.sub两个文件在搞鬼,先换掉再说。
make clean,再次make ,还是提示这个错误,我去,龙芯都编的过去,x86居然敢出难题。
直接进jemalloc目录,./configure ,make -j 16 单独编译看你咋说,结果可以单独编译成功。
回到redis目录,再次编译,还是报错:
那就索性把deps下面的都提前编译了吧:
cd deps
make hiredis lua jemalloc linenoise -j 16
编译依赖全部成功
回到redis目录,再次make -j 16 ,编译成功!
比较可怕的是网上也不知道是爬虫爬的垃圾文章到处都是,还是没人塌下心来研究,都是告诉你编译jemalloc不成功,那就配置用MALLOC=libc的方式,哎。
2.编译redis 7
没有更换config.guess和config.sub文件,上来直接去deps目录make hiredis lua jemalloc linenoise -j 16 ,回到redis目录make -j 16 直接成功。
3.配置
make install
mkdir -p /etc/redis/conf
cp ./redis.conf /etc/redis/conf
vi /etc/redis/conf/redis.conf
#修改监听ip
bind 0.0.0.0 -::*
#修改dir ./为 dir /var/lib/redis 并记好这个路径
dir /var/lib/redis
#设置为systemd启动
supervised systemd
#创建为系统服务
vi /lib/systemd/system/redis.service
复制以下内容进去
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
Environment=statedir=/run/redis
PermissionsStartOnly=true
PIDFile=/run/redis/redis.pid
ExecStartPre=/bin/touch /var/log/redis.log
ExecStartPre=/bin/chown redis:redis /var/log/redis.log
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R redis:redis ${statedir}
ExecStart=/usr/local/bin/redis-server /etc/redis/conf/redis.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli shutdown
ExecReload=/bin/kill -USR2 $MAINPID
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
创建用户及组这块和龙芯下面的配置过程有点不一样
groupadd redis
adduser --system -g redis --no-create-home redis
sudo mkdir -p /var/lib/redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis
sudo chown redis:redis -R /etc/redis
systemctl daemon-reload
systemctl enable redis
systemctl start redis