本文為《爬著學(xué)Python》系列第十一篇文章。
之前寫(xiě)過(guò)一篇Python簡(jiǎn)單入門(mén)指北-環(huán)境配置,因?yàn)槭菫榱诵率譁?zhǔn)備的,所以很簡(jiǎn)單,就是去官網(wǎng)下軟件包,一步步安裝就可以了。雖然我們默認(rèn)的運(yùn)行環(huán)境是Windows,但是如果是工作環(huán)境,那么有兩個(gè)東西是無(wú)法避免的,一個(gè)是版本控制系統(tǒng)(Git或者CVS,我以后會(huì)介紹Git),另一個(gè)就是今天要講的遠(yuǎn)程連接。
現(xiàn)在絕大部分互聯(lián)網(wǎng)相關(guān)開(kāi)發(fā)工作還有很多軟件開(kāi)發(fā),工作場(chǎng)景都是用“小黑框”進(jìn)行遠(yuǎn)程連接。這樣的做法可以管理開(kāi)發(fā)進(jìn)度,不管是協(xié)同合作還是部分代碼保密,讓程序員用一定權(quán)限的賬號(hào)連接服務(wù)器是最方便的(Git也能完成這樣的功能但是沒(méi)那么方便,所以更適用于源碼管理)。
總之,我們很有必要學(xué)習(xí)遠(yuǎn)程連接的知識(shí),而實(shí)際場(chǎng)景中我們連接的服務(wù)器絕大多數(shù)都是Linux環(huán)境,所以本文的內(nèi)容就包括了一部分Linux的知識(shí)。不過(guò)要用一篇短文介紹Linux的使用方法是遠(yuǎn)遠(yuǎn)不夠的,我們就借講解一下怎么在Linux環(huán)境下配置Python環(huán)境來(lái)順便熟悉Linux的基礎(chǔ)操作和遠(yuǎn)程連接服務(wù)器的操作。而就是把Linux當(dāng)作主力開(kāi)發(fā)環(huán)境的可以只看環(huán)境配置部分。
鑒于并不是所有人都有服務(wù)器,為了方便實(shí)踐,所以我們用虛擬機(jī)來(lái)模擬。
環(huán)境:VirtualBox+CentOS7.2+SecureCRT8.1
好了,廢話有點(diǎn)多了。
虛擬機(jī)準(zhǔn)備
如果準(zhǔn)備實(shí)踐,在開(kāi)始操作之前推薦先去下載虛擬系統(tǒng)要用到的鏡像文件(CentOS下載地址),推薦精簡(jiǎn)版本(Minimal ISO),這里面除了Vim和yum幾乎要用到的什么都沒(méi)有,所有東西都要主動(dòng)裝,最適合練習(xí)。
要在Windows環(huán)境創(chuàng)建一個(gè)虛擬機(jī),方法有很多。Windows有內(nèi)置的hyper-V但是主要用來(lái)模擬Windows環(huán)境;Win10系統(tǒng)內(nèi)置了Ubuntu,在控制面板的程序管理中可以找到相關(guān)功能,但是這個(gè)系統(tǒng)并不完善所以也不推薦使用。
接下來(lái)就是第三方的虛擬軟件,Windows平臺(tái)現(xiàn)在主流的是VMware和VirtualBox(Mac更推薦Parallels)。VMware有收費(fèi)和免費(fèi)兩種版本,免費(fèi)版太過(guò)簡(jiǎn)陋不推薦使用,收費(fèi)版有一萬(wàn)種破解方法。VirtualBox是開(kāi)源軟件,個(gè)人評(píng)價(jià)介于VMware收費(fèi)版和免費(fèi)版之間,且與VMware收費(fèi)版本性能和功能相差不大。所以我是非常推薦心安理得地使用VirtualBox的(VirtualBox下載地址)。
官網(wǎng)下載的VirtualBox下載以后一路安裝就可以了。這時(shí)候如果系統(tǒng)鏡像文件下載好就可以創(chuàng)建虛擬環(huán)境了。
下載以后打開(kāi)VirtualBox選擇“新建”,在彈出的窗口中選擇“專家模式”,接下來(lái)類型選“Linux”,版本對(duì)應(yīng)下載的鏡像版本進(jìn)行選擇,如果是CentOS應(yīng)該選擇RedHat,
接下來(lái)選擇“創(chuàng)建”會(huì)跳出虛擬硬盤(pán)的設(shè)定窗口,選擇好虛擬硬盤(pán)的目錄位置(默認(rèn)在C盤(pán)),文件類型不關(guān)鍵,用默認(rèn)的即可。大小建議至少在4GB以上,選擇動(dòng)態(tài)分配大小以后不會(huì)占用很多空間不必害怕浪費(fèi)。
再點(diǎn)擊創(chuàng)建,虛擬環(huán)境就創(chuàng)建成功了,但是我們還沒(méi)有給虛擬機(jī)安裝操作系統(tǒng)。我們可以點(diǎn)擊“啟動(dòng)”運(yùn)行試試看。
進(jìn)入環(huán)境以后會(huì)提示選擇啟動(dòng)盤(pán)
選擇虛擬光盤(pán)或者點(diǎn)擊文件目錄選擇剛才下好的CentOS鏡像文件以后點(diǎn)擊“啟動(dòng)”,在接下來(lái)的界面中選擇“Install CentOS”(默認(rèn)選項(xiàng))。之后就會(huì)進(jìn)入系統(tǒng)安裝界面。
為了兼容性我們可以選擇默認(rèn)語(yǔ)言的英文,直接選擇繼續(xù)即可。
在“l(fā)ocalization”本地化中選擇“l(fā)anguage support”語(yǔ)言支持,加入中文。時(shí)區(qū)不用管也沒(méi)多大關(guān)系。
在“system”系統(tǒng)中選擇“installation destination”安裝地址,選擇剛才創(chuàng)建的虛擬硬盤(pán)。沒(méi)有特殊需求使用自動(dòng)分區(qū)即可。選擇“network&host name”網(wǎng)絡(luò)和網(wǎng)關(guān)中將連接打開(kāi)。
接下來(lái)選擇下一步開(kāi)始安裝,在安裝的同時(shí)在“user seetings”賬戶設(shè)置中可以設(shè)置root根賬號(hào)的密碼,還可以創(chuàng)建一個(gè)普通用戶或者管理員賬戶。安裝的時(shí)候有可能耗時(shí)比較長(zhǎng)(幾分鐘),不要因安裝時(shí)間太久怕是有地方出錯(cuò)了。
安裝完成以后選擇“reboot”重啟,即可進(jìn)入系統(tǒng)。輸入用戶名和密碼登錄就可以進(jìn)行操作了。
注意到CentOS作為服務(wù)器系統(tǒng)是沒(méi)有自帶圖形化界面的,只能用命令行進(jìn)行交互。這也是我推薦使用它的原因,因?yàn)橐茄b個(gè)Arch或者Ubuntu命令行不會(huì)幾句一天到晚在美化桌面就沒(méi)意思了。我們先在這里試試幾個(gè)簡(jiǎn)單的命令,包括查看版本信息(也可以用 cat /etc/redhat-release
查看CentOS版本信息),以及進(jìn)入Python命令行。
注意到CentOS以及內(nèi)置了Python2.7.5,其實(shí)Linux系統(tǒng)包括現(xiàn)在的Unix系統(tǒng)一般都會(huì)內(nèi)置Python了,因?yàn)橄到y(tǒng)中有些工具就是用Python寫(xiě)的,等會(huì)我們配置Python環(huán)境的時(shí)候還會(huì)遇到這些工具帶來(lái)的一些麻煩。而且可以看到VirtualBox的運(yùn)行環(huán)境看得人眼睛要瞎掉,我們趕緊想辦法遠(yuǎn)程連接,先看看本機(jī)的IP地址。
注意到顯示的不是最內(nèi)網(wǎng)IP,我們可以去VirtualBox控制臺(tái)把網(wǎng)卡改成橋接網(wǎng)卡。
之后重啟再次查看IP確認(rèn)。
接下來(lái)就可以放心用遠(yuǎn)程連接工具進(jìn)行連接了。先放個(gè)效果圖
遠(yuǎn)程連接
遠(yuǎn)程連接工具也有很多選擇,常見(jiàn)的有SecureCRT,Putty,Xshell,Cygwin等。其中Putty比較精簡(jiǎn),Cygwin比較復(fù)古,這兩個(gè)是免費(fèi)軟件。而SCRT和Xshell功能更為強(qiáng)大所以現(xiàn)在最為主流,且都是收費(fèi)的商業(yè)軟件。網(wǎng)上一樣有一萬(wàn)種破解方法,但是這里我推薦用Xshell的家庭和學(xué)生版(Xshell下載地址),又可以心安理得地免費(fèi)使用正版了。當(dāng)然如果公司有SecureCRT的注冊(cè)碼那最好不過(guò)了,我剛才截的就是SecureCRT的圖,等下對(duì)比Xshell就可以看出來(lái)UI要好看許多(主要是能透明)。
下載以后一路安裝就可以了。然后連接我們的地址。
連接成功以后就像這樣。
注意要輸入剛才裝機(jī)時(shí)設(shè)置的賬號(hào)和密碼。這里要說(shuō)明一下連接的安全設(shè)置問(wèn)題。你可能發(fā)現(xiàn)了,這樣連接是非常不安全的,任何知道該主機(jī)IP和密碼的人就可以連接了。我們以后會(huì)用SSH驗(yàn)證身份,但是我打算在Git相關(guān)內(nèi)容中講解。現(xiàn)在先不去管它,我們暫時(shí)練手用的虛擬機(jī)也不用管安全性什么的問(wèn)題。
下面我們就開(kāi)始配置Python環(huán)境了,在操作之前不妨改一下連接工具的字體,至少要看得不累。我就換回SecureCRT演示了,Xshell也是一樣的操作。
Python下載安裝
由于是精簡(jiǎn)的系統(tǒng),我們第一步建議安裝開(kāi)發(fā)工具包,命令是
yum groupinstall -y 'Development tools'
當(dāng)然你要是覺(jué)得沒(méi)必要裝那么多東西,可以直接yum install gcc
,等會(huì)遇到有什么需要的包再安裝就是了。
接下來(lái)需要安裝的是下載解壓相關(guān)的工具
yum install -y zlib-devel bzip2-devel openssl-devel
這里解釋一下我們用的工具yum
,這個(gè)和Python的pip
差不多。而且就像pip
和easy_install
的關(guān)系類似,yum
或者說(shuō)rpm
是由apt
發(fā)展而來(lái),它們之間的優(yōu)劣我們就不比較了。-y
參數(shù)意思是所有需要選擇的地方默認(rèn)選擇yes
。關(guān)于yum
工具的具體知識(shí)我就不展開(kāi)來(lái)講了,有興趣可以參考linux yum命令詳解。
接下來(lái)我們需要下載Python安裝包。首先我們需要新建一個(gè)文件夾來(lái)保存下載的文件,我們會(huì)接觸到以下這些命令:
ls -a #列出當(dāng)前目錄下的所有內(nèi)容
cd [dir] #打開(kāi)某個(gè)目錄
mkdir [name] #新建目錄
#特殊目錄 ..上級(jí)文件夾
#特殊目錄 .當(dāng)前文件夾
#特殊目錄 ~當(dāng)前用戶文件夾
#特殊目錄 /根目錄
我們決定下載在剛才裝系統(tǒng)時(shí)創(chuàng)建的普通用戶的文件夾中。以下是我的示例,為了演示每一步都查看了當(dāng)前目錄下的內(nèi)容。
如果新建錯(cuò)了想要?jiǎng)h除某個(gè)目錄(不建議做這種事情),可以用這樣的命令
rm -r [dir]
接下來(lái)我們需要下載Python安裝包。我們可以去官網(wǎng)下載,也可以使用國(guó)內(nèi)的鏡像。我們進(jìn)入建立好的臨時(shí)目錄,用curl
下載
curl -O https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
需要說(shuō)明的是curl
也有類似的工具wget
。但是RedHat內(nèi)置的一般是curl
,關(guān)于curl
的其他具體使用方法可以參考Linux curl命令詳解。
下載好以后進(jìn)行解壓。
tar -xvf Python-3.6.0.tar.xz
之后進(jìn)入解壓后得到的文件夾,./configure
,make
,make install
編譯連招了。
cd Python-3.6.0
./configure
make && make install
這樣一來(lái)其實(shí)我們的Python就安裝好了,我們可以試一下。
注意到環(huán)境變量中Python還是鏈接著原來(lái)的Python2.7.5,我們想要使用剛剛安裝的Python需要用Python3
命令。如果沒(méi)有強(qiáng)迫癥那么現(xiàn)在這樣就可以了,當(dāng)然,如果想要高版本的Python作為默認(rèn)Python,我們需要更改環(huán)境變量。
環(huán)境變量設(shè)置
我們環(huán)境變量具體要做這樣幾件事情,首先把現(xiàn)在的Python鏈接轉(zhuǎn)移到Python2(一般來(lái)說(shuō)已經(jīng)存在了),然后把新的Python鏈接到環(huán)境中,具體是這樣做
# 轉(zhuǎn)移
mv /usr/bin/python /usr/bin/python2
# 刪除現(xiàn)有鏈接
rm -f /usr/bin/python
rm -f /usr/bin/python-config
# 建立新鏈接
ln ln -s /usr/local/bin/python3 /usr/bin/python
ln -s /usr/local/bin/python3-config /usr/bin/python-config
關(guān)于ln
命令和文件鏈接相關(guān)知識(shí)就不展開(kāi)講了,如果以后詳細(xì)講解Linux編程可能會(huì)詳細(xì)介紹Linux文件系統(tǒng)的知識(shí)。
現(xiàn)在我們輸入python
命令已經(jīng)是剛安裝的Python3.6了,要想使用原來(lái)的Python2.7.5, 我們可以使用Python2
或者Python2.7
命令。
本來(lái)我們的工作到這里就該結(jié)束了。但是剛才文章一開(kāi)頭我就說(shuō)過(guò),更改Python的環(huán)境變量以后會(huì)帶來(lái)一些麻煩。這也是我推薦使用精簡(jiǎn)版的CentOS的原因,不然要改的東西太多,用的時(shí)候臨時(shí)來(lái)改會(huì)很麻煩。
注意到^H
是我在按退格的時(shí)候出現(xiàn)的映射錯(cuò)誤,我們想要退格需要ctrl+backspace
或者ctrl+w
但是這未免太麻煩了。出現(xiàn)這個(gè)問(wèn)題的原因涉及到比較基礎(chǔ)的歷史遺留問(wèn)題。要想解決這個(gè)問(wèn)題,我們可以在SecureCRT的session設(shè)置中覆蓋按鍵,
但是這不是一勞永逸的辦法。我們還可以通過(guò)安裝readline
工具來(lái)解決。
但是發(fā)現(xiàn)我們的yum
工具不能用了。原因在于這個(gè)工具的python文件中指出的Python解釋器路徑被我們?cè)O(shè)置成了Python3
,但是文件本身卻是按照Python2
的規(guī)則寫(xiě)的,問(wèn)題根源在于Python3
和Python2
的不兼容。要想解決這個(gè)問(wèn)題,我們?nèi)ジ奈募^就可以了。
vi /usr/bin/yum
關(guān)于vim編輯器的使用,可以直接百度,只要知道有讀/寫(xiě)兩種模式,i
進(jìn)入編輯模式,esc
退出編輯模式,:q!
直接退出,:wq!
保存后退出就足夠了,我們不會(huì)拿這個(gè)當(dāng)開(kāi)發(fā)工具的(以后會(huì)介紹更友好的IDE)。
我們?cè)賮?lái)試一試yum install readline-devel
這回我們就能成功安裝了,Python中方向鍵和退格也能正常工作了。
最后試一下pip
我們就算完成環(huán)境配置工作了。推薦安裝setuptools
,wheel
,conda
,pyenv
,virtualenv
這些基本工具包做嘗試。
到這里,基本上就算是Python環(huán)境配置完成了,再加上git,就算完成Linux開(kāi)發(fā)環(huán)境配置了。
這樣一來(lái),我們一般的開(kāi)發(fā)流程是
- 在服務(wù)器新建git倉(cāng)庫(kù)
- 在開(kāi)發(fā)機(jī)器上(windows)clone項(xiàng)目
- 在Windows機(jī)器上用虛擬環(huán)境開(kāi)發(fā)(virtualenv)
- 同步開(kāi)發(fā)進(jìn)度
- 在服務(wù)器上根據(jù)requirements.txt來(lái)還原虛擬環(huán)境
- 適應(yīng)性調(diào)試,其他工具配置
- 在服務(wù)器上運(yùn)行應(yīng)用
所以接下來(lái)的兩篇分別會(huì)是git
和Python版本控制相關(guān)內(nèi)容。