Linux中redis安裝及軟件安裝相關Linux知識要點

無論是Linux還是windows安裝軟件,都要先有一個安裝包。這個安裝包可以是直接本機下載,也可以是從其他機器傳過來。
在Linux中軟件安裝方式也有多種,我目前知道了就有yum安裝、直接本機下載安裝包安裝以及他機傳遞安裝包進行安裝,這些方式可能常常會搭配着使用,哪個方便用哪個。
就我個人以往的使用來說,場景大概如下:

yum:常用來安裝一些系統級命令以及軟件;
本機直接下載安裝包:建立在本機能連接外網的基礎上,需要使用到Linux的wget命令;
他機傳遞安裝包:常用於已經有了安裝包或者需要安裝軟件的機器不能訪問外網,通常需要使用到FtP工具;

下邊以一個剛安裝的純淨版CentOS系統中安裝Redis爲例,記錄wget安裝方式的過程及各操作細節分析。(此描述可能不準確,wget實際只是下載安裝包)
使用wget方式的原因,是因爲能聯網的情況下,這種方式比他機傳遞更方便,而yum方式不是太熟,也不清楚是否能用yum安裝Redis。

yum安裝wget

wget下載安裝包,需要系統有這個命令,而這個剛安裝的系統中還沒有wget命令,就需要先安裝一下,這裏採用的就是yum方式:

yum install wget

注:yum是什麼?yum是RedHat、CentOS等Linux系統中Shell前端軟件包管理器,可以管理一些基礎軟件的安裝、查找和刪除,這是一個系統自帶的功能。更詳細的只是可參考如下博客:
https://blog.csdn.net/shuaigexiaobo/article/details/79875730

wget下載Redis安裝包

wget下載安裝包,需要先知道安裝包的下載地址,對於redis來說,可以在官網中找到。
Redis官網地址是:https://redis.io/,中文版的官網地址是:http://www.redis.cn/,不管哪個,打開首頁都能看到Download或者下載選項,在下邊就能看到下載鏈接,右鍵選擇複製鏈接即可,我複製到的鏈接如下:
http://download.redis.io/releases/redis-6.0.5.tar.gz

有了鏈接之後,就可以使用wget下載了:

wget http://download.redis.io/releases/redis-6.0.5.tar.gz

tar解壓安裝包

tar本身功能是用來文件歸檔的,所以其實並不具備壓縮和解壓功能,之所以說使用tar解壓安裝包,是因爲它能夠調用系統的解壓和壓縮軟件,實際上就是後邊參數的作用。
tar部分參數解釋如下;

-v --verbose 顯示詳細的tar處理的文件信息
-f --file 要操作的文件名
-x --extract, --get 解壓文件
-z --gzip, --gunzip, --ungzip 通過 gzip 來進行歸檔壓縮

上邊只列出了四個參數,其實也是我一直習慣用的,只是之前一直只是用,也沒有想各個參數的含義。
那麼其實從上邊的解釋來看,z和v實際都不是必要的,而且z是指特定的壓縮格式,或許加了反而會導致某些格式的壓縮包解壓失敗。
所以,這裏的解壓命令如下:

tar xf redis-5.0.5.tar.gz

注:若想了解更多tar知識,可參考後邊的博客:https://blog.csdn.net/u014642915/article/details/86579575

幫助文檔readme

大部分軟件包解壓後都會一個Readme文件,實際上不論是安裝還是使用,都可以從這裏得到很多幫助和指引。
拿我安裝Redis和mongodb來說,Redis裏很詳細的說明了如何安裝和基本使用,mongo雖然沒有那麼詳細,但是裏邊也指明瞭安裝需要去看哪裏的文檔。
所以這個readme文件應該是最權威的新手指引文檔之一了。
對Redis來說,從readme文件裏,就能看到源碼安裝實際就是一個make命令。

make

make實際可以看做是一個構建工具,常用語c語言編寫的程序源碼構建安裝某個軟件,然是它不限於c語言,而這裏redis源碼是用c語言編寫的,所以使用make。
make執行的根源,其實是執行目錄下的一個Makefile文件,make會根據這個文件裏的內容做一些事情。
而在redis源碼目錄下,Makefile文件直接是又執行了另一個Makefile文件,打開這個Makefile文件會發現指向了src目錄下的Makefile,而這個Makefile裏的內容纔是make真正要做的事。

cc

上邊說redis源碼是c語言編寫的,因此對於這個源文件的編譯,就需要c語言的編譯器,從Makefile文件也能看出來有執行cc,所以對於新安裝的Linux系統來說,直接執行make一般是會報錯cc: command not found.
報錯是因爲沒有c語言編譯器,所以就需要再先安裝c語言編譯器,而常用的可能就是gcc,g是GNU的意思,可理解爲就是自由和開源,gcc安裝命令如下:

yum install gcc

make distclean

安裝好gcc以後,重新執行make可能會報錯,原因是上一次的make會有一些錯誤殘留文件,因此需要執行清理動作,即README.md裏也能看到的make distclean命令。
清理動作完成後,重新make,一般就能夠把源碼安裝包構建成可運行的軟件。像這裏的redis,就會在src目錄下創建一些redis相關的可執行文件,例如redis-server、redis-client等。直接在此目錄執行相應的執行文件,就可以初步使用redis了。

注:如果是最新的安裝包,可能還要注意gcc的版本問題,可能因爲gcc版本過低,導致make依然報錯,那就需要升級gcc。

make install

上述內容雖然已經可以使用redis了,但是每次啓動redis以及使用redis相關可執行程序,都要到這個目錄,或者指定絕對路徑,就顯得很不方便。
因此,很多這種軟件都會做成系統的服務,即service。
根據README.md文件說明,redis安裝成服務有兩步,一步是make install,一步install_server.sh
make install如果沒有其他參數,就會默認安裝到/usr/local/bin目錄,如果想要自定義路徑,就可以加上“PREFIX”參數,例如make install PREFIX=/opt/soft/redis,這一步其實就是做了一個數據移動,會把src目錄下的可執行文件移動到默認或者指定的目錄下,相當於把安裝後的可執行和原本就有的非可執行程序做了一個分離。

/etc/profile系統配置

在windows安裝過低版本jdk的可能知道,需要自己安裝完之後配置一個jdk的環境變量。環境變量配置的目的,一方面是有的軟件默認需要加載這個內容,不配置可能導致運行問題,另一方面也是減少手動指定的工作量。
我們這裏需要配置redis環境變量,目的就是在智行install_server.sh的時候減少一些輸入。
根據我上邊的步驟,在這個系統配置文件末尾可以加上如下配置:

export REDIS_HOME=/opt/soft/redis
export PATH=$PATH:$REDIS_HOME/bin

source重新加載系統配置

上邊配置文件是靜態的,修改之後不會立即生效,所以需要執行source /etc/profile以使配置生效。

install_server

有了上述環境變量的配置後,再回到redis的utils目錄,就可以執行install_server.sh了,對於默認配置的redis來說,這時候就會把redis安裝到系統的service服務中。
後續在系統任何文件目錄下都可以執行service ** startservice ** statusservice ** restart等命令操作相關服務。
上邊“**”我可以簡單理解爲服務名,實際上對應的是/etc/init.d目錄下的一個腳本文件,像這裏使用默認配置安裝的redis服務,就會在init.d目錄下生成一個redis_6379腳本。
所有linux系統的服務,都會在/etc/init.d目錄生成一個相應的腳本文件,這算是一個linux常識。
上邊的命令,其實做了很多事,把redis安裝成系統服務的同時,還會直接啓動這個服務,在本機上我們就可以進行一定的redis操作了。

bind

默認的redis配置文件,裏邊有一行bind 127.0.0.1,指向本機,所以對於虛擬機來說,如果想要在外部windows系統中使用redis客戶端工具連接就連接不上,所以需要修改一下。
可以改成具體的機器ip,也可以改成bind 0.0.0.0,這樣任意機器就都可以訪問了。
至於bind具體用法,可以參考下邊博客:
https://blog.csdn.net/cw_hello1/article/details/83444013

防火牆

上邊說修改了bind後,windows就可以使用redis客戶端工具連接了,其實也不對。因爲默認開啓的Linux系統是開啓了防火牆的,那麼redis的默認6379端口不在這個防火牆允許的端口內,所以外部依舊無法訪問,這就需要進行處理。
處理方式有多重,可以是配置防火牆,把需要的端口加進去;可以是關閉防火牆。而關閉防火牆又可以是永久性關閉和臨時關閉。
通常我個人都是使用的臨時關閉,命令如下:

service iptables stop

至此,redis算是正式安裝完畢,相應環節中有許多通用內容,也是對基礎知識的一個良好補充。相信有了這些知識後,後邊安裝mongo也好,nginx也好,應該都能節省很多不必要的麻煩。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章