天翼雲Linux(CentOS7.6)安裝redis6.0全過程
天翼雲 安裝redis6.0
1. 安裝GCC
先檢視是否安裝GCC,我的是4.8.5,所以更新了一下
gcc -v
#如果沒有的話安裝一個 安裝完成之後檢視版本,新安裝的一般不用更新的
yum install -y gcc
更新GCC
yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash #修改環境變數 echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
再次檢視GCC版本
2.下載redis
#我選擇下載到/root/opt/app/software/redis目錄下
cd /root/opt/app/software/redis
#下載
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
#解壓
tar -zxvf redis-6.0.6.tar.gz
3. 切換到redis目錄下,執行編譯
cd redis-6.0.6
//進行編譯
make
ok 給老子報錯,我已經做好解決錯誤的準備了
首先 這裡一般不會報關於gcc的錯誤,我們上面已經更新版本了;
3.1.錯誤內容:jemalloc/jemalloc.h: No such file or directory
針對這個錯誤,我們可以在README.md 檔案中看到解釋。
--------- Selecting a non-default memory allocator when building Redis is done by setting the `MALLOC` environment variable. Redis is compiled and linked against libc malloc by default, with the exception of jemalloc being the default on Linux systems. This default was picked because jemalloc has proven to have fewer fragmentation problems than libc malloc. To force compiling against libc malloc, use: % make MALLOC=libc To compile against jemalloc on Mac OS X systems, use: % make MALLOC=jemalloc Verbose build -------------
解決辦法
網上很多辦法都是這樣解決的,(我用的也是這個,就自己玩玩,沒那麼較真)
make MALLOC=libc
有的大佬說的是這樣
#清理上次編譯殘留檔案,重新編譯
make distclean && make
網上的解決辦法雖然最後也是可以成功安裝好 redis ,但是是有一些隱患的,首先我們要知道redis 需要使用記憶體分配器的, make MALLOC=jemalloc 就是指定記憶體分配器為 jemalloc ,make MALLOC=libc 就是指定記憶體分配器為 libc ,這個是有安全隱患的,jemalloc 記憶體分配器在實踐中處理記憶體碎片是要比libc 好的,而且在README.md 文件也說明到了,jemalloc記憶體分配器也是包含在原始碼包裡面的,可以在deps 目錄下看到 jemalloc 目錄。
3.2.報錯資訊:
這個報錯直接給我幹蒙了,網上關於這個裝redis報錯誤解決辦法很少,
還有大哥說這個問題的根源還是在於linux核心的標頭檔案沒有裝好,
不過我這個是買的雲伺服器應該不會吧
解決辦法
CentOS 7執行這個命令,然後就好了....
不過我不知道這個是因為啥
yum install kernel-headers -y
然後接著make MALLOC=libc
3.3.報錯資訊
cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
cc: error: ../deps/lua/src/liblua.a: No such file or directory
make[1]: *** [redis-server] Error 1
make[1]: Leaving directory `/root/opt/app/software/redis/redis-6.0.1.src'
make: *** [all] Error 2
解決辦法
進入原始碼包目錄下的deps目錄中執行
make lua hiredis linenoise
然後接著make MALLOC=libc
3.4. 報錯資訊
解決辦法
其實這個問題的解決辦法跟第一個有點像吧
sudo make distclean
sudo make
然後接著make MALLOC=libc
3.5.報錯資訊
[exception]: Executing test client: NOREPLICAS Not enough good slaves to write..NOREPLICAS Not enough good slaves to write.
……
Killing still running Redis server 6339Killing still running Redis server 6386Killing still running Redis server 6319Killing still running Redis server 6346Killing still running Redis server 6374Killing still running Redis server 6391I/O error reading reply
……
解決辦法
vim tests/integration/replication-2.tcl
也就是修改redis-6.0.1下面的這個tests下面的檔案
找到after 1000
改為after 10000
然後 make test就ok了
3.6.最後的最後 終於綠了
我這一生,失敗透頂,民國三年等不到一場雨,這一生,等不到一句我愛你
但是我等到它綠了呀
4 指定安裝目錄
我是還裝在這個目錄下面
make install
5.啟動服務
進入src目錄下執行
./redis-server
a
哎 跑得起來,ok,修改redis.conf
5.修改redis.conf
#修改為no,遠端可以訪問
protected-mode no
#修改埠號為6379
port 6379
#修改為yes 後臺執行
daemonize yes
修改完成後吧這個檔案複製到src目錄下,
進入src目錄下執行
./redis-server
6.天翼雲上放開埠號,保證可以訪問到
新建安全組
配置規則--》快速新增規則--》勾選Redis即可確定
這些操作完成之後,windows開啟cmd
可以通過telnet +ip+埠號去訪問一下
#例如
telnet 192.168.0.66 6379
ok 齊活