安裝過程
這次安裝的redis是最新的大版本,5.0.4 。redis的安裝相對比較簡單充易,在官網(wǎng)下到相關(guān)的安裝包,解壓荸型,我放的目錄是/opt/redis 盹靴。然后安裝gcc
yum install gcc make -y
然后執(zhí)行make test,看是否可以構(gòu)建成功帆疟。
我執(zhí)行后提示我鹉究,缺號tcl8.5或者更新的版本。之前我是有存下來tcl8.5的安裝包的踪宠,這次我發(fā)現(xiàn)yum有tcl的8.5版本,試試吧妈嘹。
yum install tcl #看清楚了版本再安裝最低要求8.5版本
再次make test柳琢,報錯Executing test client: couldn't execute "src/redis-benchmark": no such file or directory.
couldn't execute "src/redis-benchmark": no such file or directory
網(wǎng)上說進(jìn)行make distclear ,后來發(fā)現(xiàn)润脸,他是test通過后柬脸,install報錯時使用的命令。我懷疑這和我裝的tcl有關(guān)毙驯,所以倒堕,我把之前yum的版本卸載了
yum remove tcl
然后安裝我常安裝的tcl版本,8.6爆价,命令如下:
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz
cd tcl8.6.1/unix/
./configure
make
make install
然后垦巴,還是不行媳搪。
于是我決定,先make再說吧骤宣。于是秦爆,我在make的結(jié)果中看到了benchmakr.o。那我再試試make test咧憔披。嗯等限,成功了。TNND芬膝。望门。。所以锰霜,我無法證明yum自身的tcl是不ok的筹误,而且我還把我的虛擬機(jī)從單核升為了雙核,也不知道有沒有影響锈遥,以后有機(jī)會再說吧纫事。
make install # 安裝搞定
配置
在軟件根目錄下面有個redis.conf文件,是一個范例的配置文件所灸,可以直接使用丽惶,不過我們需要進(jìn)行一些調(diào)整,先復(fù)制出來一個吧
mkdir /etc/redis
cp redis.conf /etc/redis/6379.conf
變更的內(nèi)容有:
daemonize yes
bind 0.0.0.0
requirepass 123456
至此爬立,服務(wù)已可用钾唬。為了重啟服務(wù)器的時候,少手動啟動一些服務(wù)侠驯,接下來我們配置開機(jī)啟動抡秆。
開機(jī)啟動
需要注意的是,我們這是centos7,和centos6的開機(jī)啟動區(qū)別有些大吟策。首先讓我們創(chuàng)建啟動用的服務(wù)文件 /lib/systemd/system/redis-6379.service
vim /lib/systemd/system/redis-6379.service
[Unit]
#描述服務(wù)
Description=redis-6379
#描述服務(wù)類別
After=network.target
[Service]
#forking是后臺運行的形式
Type=forking
#服務(wù)啟動的具體命令
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
#ExecReload為服務(wù)重啟的具體命令
#ExecStop服務(wù)停止的具體命令
#true表示給服務(wù)分配獨立的臨時空間
PrivateTmp=true
[Install]
#設(shè)置為多用戶
WantedBy=multi-user.target
systemctl enable redis-6379.service
需要注意的是
- 上面的注釋在實際使用時均需要去掉儒士,否則會報錯。
- 命令中必須使用絕對路徑檩坚,所有的環(huán)境變量和相對路徑均是無效的着撩。
- 經(jīng)過測試,雖然我沒有設(shè)置stop命令匾委,但是stop依然可以正確的關(guān)閉我的進(jìn)程拖叙。
關(guān)于開機(jī)啟動的一些補充信息
任務(wù) | 舊指令 | 新指令 |
---|---|---|
使某服務(wù)自動啟動 | chkconfig --level 3 redis-6379 on | systemctl enable redis-6379.service |
使某服務(wù)不自動啟動 | chkconfig --level 3 redis-6379 off | systemctl disable redis-6379.service |
檢查服務(wù)狀態(tài) | service redis-6379 status | systemctl status redis-6379.service (服務(wù)詳細(xì)信息) systemctl is-active redis-6379.service (僅顯示是否 Active) |
顯示所有已啟動的服務(wù) | chkconfig --list | systemctl list-units --type=service |
啟動某服務(wù) | service redis-6379 start | systemctl start redis-6379.service |
停止某服務(wù) | service redis-6379 stop | systemctl stop redis-6379.service |
重啟某服務(wù) | service redis-6379 restart | systemctl restart redis-6379.service |
After
表示如果network.target或sshd-keygen.service需要啟動,那么sshd.service應(yīng)該在它們之后啟動赂乐。
Type
- simple(默認(rèn)值):ExecStart字段啟動的進(jìn)程為主進(jìn)程
- forking:ExecStart字段將以fork()方式啟動薯鳍,此時父進(jìn)程將會退出,子進(jìn)程將成為主進(jìn)程
- oneshot:類似于simple挨措,但只執(zhí)行一次挖滤,Systemd 會等它執(zhí)行完崩溪,才啟動其他服務(wù)
- dbus:類似于simple,但會等待 D-Bus 信號后啟動
- notify:類似于simple壶辜,啟動結(jié)束后會發(fā)出通知信號悯舟,然后 Systemd 再啟動其他服務(wù)
- idle:類似于simple,但是要等到其他任務(wù)都執(zhí)行完砸民,才會啟動該服務(wù)抵怎。一種使用場合是為讓該服務(wù)的輸出,不與其他服務(wù)的輸出相混合
WantedBy
表示該服務(wù)所在的 Target岭参。
Target的含義是服務(wù)組反惕,表示一組服務(wù)。WantedBy=multi-user.target指的是演侯,sshd 所在的 Target 是multi-user.target姿染。
這個設(shè)置非常重要,因為執(zhí)行systemctl enable sshd.service命令時秒际,sshd.service的一個符號鏈接悬赏,就會放在/etc/systemd/system目錄下面的multi-user.target.wants子目錄之中。
后記
在后來使用centos8裝redis的時候娄徊,參照這篇文章進(jìn)行安裝闽颇,很順利。centos8里tcl庫默認(rèn)是8.6的寄锐。這次我直接用的yum里的兵多。然后,make test依然是相同的錯誤橄仆。不過在make和make install之后再次執(zhí)行剩膘,所有的測試通過。所以盆顾,tcl庫可以用yum庫的怠褐,同時make test要在安裝完成之后進(jìn)行才可以。