原文鏈接: https://www.vnpy.com/forum/topic/1967-vn-pyshe-qu-jing-xuan-2-da-jian-a-li-yun-ubuntuliang-hua-jiao-yi-fu-wu-qi
對於vn.py的初學者以及絕大部分用戶來說,Windows操作系統可能是最好的選擇,性能滿足需求而且也幾乎沒有額外的學習成本。但不可否的是,Linux操作系統在系統資源占用、擴展服務開發、跨進程通訊延時等方面,有着明顯的優勢。
社區內也一直不乏用戶希望嘗試學習使用Linux,最常見的兩種形式包括:
- 虛擬機:VMWare、Hyper-V等,運行於本地電腦,傻瓜式安裝適合體驗學習
- 雲服務器:阿里雲、騰訊雲等,需要自行安裝配置,運行於服務端更適合實際應用
本篇教程就主要針對如何在阿里雲服務器上搭建一套完整的Linux量化交易系統環境來講解。Linux版本上選擇了vn.py官方支持的Ubuntu 18.04 LTS 64位版本,如果要使用Debian、CentOS等可以自行嘗試,整體大同小異。
主要用到的工具包括MobaXterm(遠程連接客戶端)、Xubuntu-destop(服務器圖形界面)、vnc4server(遠程桌面服務)等,盡管安裝配置的過程有些繁瑣,但只要跟着圖文說明一步步去做,100%能成功。
在開始安裝工作前,請先准備好1台阿里雲的服務器(也可以選擇AWS、騰訊雲等):
- 節點選擇:華東2(國內期貨、證券)或者香港(數字貨幣、外盤)
- 機器配置:2核以上CPU,4G以上內存,共享計算型(不要選突發實例)
- 操作系統:Ubuntu 18.04 LTS 64位
- 網絡帶寬:按需付費,20M以上帶寬,分配公網IP
- 登錄方式:用戶名和密碼(不要選密鑰)
購買好后請記錄下該服務器的公網IP,下面連接要用。
安裝MobaXterm
MobaXterm是一款增強型遠程連接工具,可以輕松地調用遠端Linux服務器上的各項功能命令。接下來將會用到MobaXterm的SSH和VNC功能:
- SSH,可以理解為命令行終端,類似黑框框的CMD
- VNC,則可以理解為遠程圖形化桌面,類似常規Windows桌面
首先,需要從官網下載MobaXterm:
https://mobaxterm.mobatek.net/download-home-edition.html
下載完成后解壓安裝包,直接雙擊exe文件進行安裝。
安裝完成后,雙擊桌面圖標啟動MobaXterm。在主界面中單擊導航欄左邊第一個【Session】進入連接頁面。
或者也可以點擊頂部菜單欄【Sessions】->【New Session】按鈕。
在彈出的新頁面Session Settings中,單擊導航欄最左邊的【SSH】按鈕。然后在Basic SSH settings中輸入雲服務器的公網IP和賬號。
其中默認賬號為root,輸入root賬號之前記得把左邊小方框勾選上,端口號保留默認的22即可,然后點擊最下方的【OK】按鈕。
之后會自動彈出一個新的連接頁面,第一次連接時右側終端會提示輸入雲服務器的密碼,注意在輸入時,界面上並不會有任何反應(不會顯示密碼)。
輸入完按回車鍵后,若密碼正確則會彈出一個小窗口提示是否保存密碼,可以點擊【Yes】按鈕。
看到下圖中顯示的內容,就說明阿里雲的Ubuntu服務器已經連接成功了。左邊顯示的是雲服務器上的文件夾目錄,右邊的黑框是命令操作界面。
到這里,我們就完成了使用MobaXterm遠程連接雲服務器的步驟。當然,這種連接是基於SSH,只能通過命令行終端的方式來調用服務器上的各項功能。
為了更方便的管理連接,需要進行一下重命名:點擊最左側的【Session】選項,找到剛剛創建的SSH連接,鼠標右鍵選定該連接,選擇【Rename session】。
彈出Session settings界面,其中的Session name可以修改為任意名稱,這里我們將其重命名為DEV_1,完成后點擊左下方的【OK】保存。
此時在左側的Sessions標簽中,我們可以看到該連接的名稱已經改為了DEV_1。
同理重復上面的操作,輸入相同的雲服務器的公網IP和賬號,創建第二個SSH連接(命名為DEV_2),這樣我們就能同時使用2個終端了,同理你也可以創建更多的終端連接。
更新軟件倉庫
在Windows下安裝軟件,通常只需要准備好安裝包的exe文件,然后一路點擊【下一步】即可完成。但Linux並非如此,Linux系統的發行版大多自帶了軟件包管理器,如Ubuntu和Debian的APT。
對於大部分常用的軟件,用戶都可以直接從官方提供的倉庫中下載安裝需要的軟件,而不必自己去每個網站下載,這也是Linux與Windows在使用上的一大區別。
所以在Ubuntu系統中,本地保存了一個軟件包安裝源列表,列表里面都是一些網址信息,標識着某個源服務器上有哪些軟件可以安裝使用。所以為了能夠正常安裝最新版本的軟件,首先需要更新軟件包管理器里的這些列表。
只需要在Ubuntu終端中,運行輸入命令
sudo apt-get update
就會如上圖所示,自動遍歷訪問源列表中的每個網址,並讀取最新的軟件信息,保存在本地系統中。
安裝Xubuntu-destop
Xfce是一款針對Linux/UNIX系統的現代化輕量級開源桌面環境,最大的優點是內存消耗小,且系統資源占用率很低,Linux之父Linus Torvalds日常使用的桌面環境就是Xfce。
Xfce只是純粹的桌面環境,但我們在日常使用操作系統時,還需要許多其他常用的工具,如多國語言支持、瀏覽器、輸入法工具等。Xubuntu-desktop就是一套整合了Xfce桌面環境和其他常用圖形界面軟件的安裝包。
安裝方法也相對簡單,在終端中運行命令:
sudo apt-get install xubuntu-desktop
在國內當前的網絡環境下,Xubuntu-desktop的下載和安裝可能耗時在20-60分鍾的樣子,期間可以在終端中看到類似上圖所示的安裝信息。
搭建VNC服務
VNC是一款基於RFB協議的屏幕畫面分享及遠程操作軟件,最大的特色在於跨平台性:我們可以用Windows電腦來控制Linux系統,反之亦然。
首先需要安裝VNC服務器,在終端下運行命令:
sudo apt-get install vnc4server
安裝完畢后,在終端運行命令
vncserver
用來啟動VNC服務器。首次運行時需要設置VNC遠程連接的密碼,長度至少是6位,並且二次輸入來確認(注意該密碼不是Ubuntu賬戶的密碼)。
VNC服務器啟動好后,可以在日志輸出文件名中看到其默認端口是1,上圖所示紅色方框標識“:1”。
啟動了遠程桌面服務器后,下一步是配置xstartup文件,來設置遠程桌面使用Xfce的桌面環境。用文本編輯器nano打開xstarup文件,在終端運行命令:
nano ~/.vnc/xstartup
可以看到如下內容:
需要在最后一行 "x-window-manager &" 前面添加一個"#"注釋掉這行,同時在文件最后加入一段新的配置信息:
session-manager & xfdesktop & xfce4-panel &
xfce4-menu-plugin &
xfsettingsd &
xfconfd &
xfwm4 &
修改完畢后,按住“Ctrl”和“Y”鍵來退出nano編輯器,注意會詢問是否要保存當前修改,請按“Y”進行保存。
配置完xstartup后,我們需要重啟VNC服務器:先把默認的1號端口服務殺掉,然后新的服務我們改為使用9號端口(因為1號端口容易被掃描攻擊),同時設置遠程桌面的分辨率為1920x1080(根據你的本地顯示器分辨率來設),運行下列命令:
vncserver -kill :1
vncserver -geometry 1920x1080 :9
連接VNC桌面
回到MobaXterm主界面,單擊主頁最上邊的【Sessions】->【new Session】彈出【Sessions settings】界面,這一次選擇【VNC】連接。
其中【IP address】為阿里雲公網IP,【Port】為VNC連接端口,在上一段中我們選擇了在9號端口啟動,故從需要把Port端口由默認的5900調整為5909。
同時在下面的【Bookmark settings】界面對該VNC連接進行重命名為“VNC”,點擊左下方的【OK】按鈕,開始連接VNC遠程桌面,成功后即可看到如下圖所示的Xfce圖形界面:
安裝IBus中文輸入法
作為中國人總歸免不了要輸入中文,這里我們選擇安裝IBus中文拼音輸入法,在終端中運行命令:
sudo apt install ibus-pinyin
安裝完成后,還需要先配置下Ubuntu系統的中文語言包:
- 在桌面頂部的菜單欄,點擊左上方【Applications】->【Settings】->【Language Support】按鈕;
- 第一次會出現提示語言未全部安裝,然后點擊確認自動安裝,成功后會彈出【Language Support】界面;
- 完成后點擊下方的【Install/Remove Languages】按鈕,會彈出新的【Installed Languages】界面,勾選【Chinese(Simplified)】,即簡體中文,然后點擊下方的【Apply】按鈕;
- 最后在【Keyboard input method system】選項選擇【IBus】。
設置完中文語言包后,進入IBus輸入法設置:
- 在菜單欄左上方點擊【Applications】->【Settings】->【IBus Preferences】選項;
- 第一次會提示IBus-Daemon尚未啟動,點擊【Yes】按鈕進行安裝,成功后菜單欄右上角出現一個語言圖標,並且彈出【IBus Preferences】界面;
- 進入【Input Method】界面,點擊【Add】來添加中文輸入法:選擇【Chinese】->【Pinyin】;
- 鼠標右鍵點擊菜單欄上的語言圖標【Restart】按鈕來重啟;
- 然后再次左鍵點擊,點擊【Chines-Pinyin】就可以輸入了。此時語言圖標也變成“拼”字;
- 打開一個編輯器或瀏覽器,可以看到我們此時輸入的已經是中文拼音。
安裝Visual Studio Code
既然要寫程序那就還需要一套IDE工具,同樣這里我們使用vn.py官方推薦的Visual Studio Code(VSCode),作為微軟出品的輕量級代碼編輯器,在Linux下的安裝和使用也同樣非常方便。
打開Visual Studio Code的官網:https://code.visualstudio.com/
在官網首頁點擊下載.deb版本:
Ubuntu下的deb格式安裝包,需要用使用dpkg命令來安裝。進入下載文件所在的目錄/root/Downloads,鼠標在空白處右鍵點擊【Open Terminal Here】進入終端:
輸入下面命令安裝:
sudo dpkg -i code_1.37.0-1565227985_amd64.deb
安裝完成后會發現VSCode不能正常啟動,因為Xfce和VSCode的默認設置存在兼容性問題,需要手動配置,在終端中運行下面命令:
sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' /usr/lib/x86_64-linux-gnu/libxcb.so.1
再次嘗試啟動VSCode,已經可以正常打開運行,注意上述命令輸入運行后界面沒有任何輸出。
安裝Python3.7
Ubuntu 18.04系統中內置了Python 2.7和3.6,並且輸入python命令時默認啟動的是Python2.7。
但v2.0版本的vn.py則是基於Python 3.7,如果安裝新的Python 3.7版本,則需要把新安裝的Python 3.7設置為系統默認的Python環境,同時將pip命令也指向Python 3.7的版本。
手動進行上述命令的重新定向容易導致各種問題,所以這里我們選擇使用Minconda(Python 3.7 64位)。作為最有名的Python科學計算發行版本Anaconda的輕量小弟,安裝完成后會自動設置其內部的Python 3.7為系統默認環境。
打開Minconda官網,選擇【Linux】系統的Python 3.7【64-bit】版本下載:
下載完成后,進入文件所在目錄/root/Downloads可以看到.sh格式的Miniconda安裝包,鼠標在空白處右鍵,點擊【Open Teminal Here】進入終端,然后輸入命令進行安裝:
bash Miniconda3-latest-Linux-x86_64.sh
安裝完畢后,在終端運行Python,可以看到當前的版本已經變成Python 3.7:
折騰至此,終於完成我們的目標:支持遠程圖形桌面的阿里雲Ubuntu量化交易服務器~~未來Linux使用熟練后,也同樣可以選擇關閉圖形界面,以純命令行的形式來運行vn.py的自動交易功能。