搭建阿里云Ubuntu量化交易服务器--vn.py社区
原文链接: 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的自动交易功能。