本文接上篇,在windows下搭建skynet开发环境之一——安装虚拟机软件和系统
创建一个文件夹,如:skynet
如安装过git,在创建的文件夹中右键点击,选择“git bash here”菜单,打开git命令行窗口
在命令行窗口输入: git clone https://github.com/cloudwu/skynet.git
注意国内的网络访问github可能非常慢,所以有条件的话最好架个梯子。
如果没有安装git客户端,也可以直接访问GitHub - cloudwu/skynet: A lightweight online game framework
下载skynet的压缩包,放到刚创建的目录里面解压,
打开虚拟机软件,选中上篇建立的虚拟机,在工具栏点击设置按钮,打开设置界面;
点击共享文件夹,将上一步创建的文件夹共享到虚拟机。
这一步我们还要让虚拟机中的共享文件夹中可以建立软链接,否则后面skynet会编译失败,方法:
以管理员身份运行CMD命令行,cd进入VirtualBox的安装目录,执行命令:
VBoxManage setextradata XXXXX VBoxInternal2/SharedFoldersEnableSymlinksCreate/***** 1,
其中XXXXX为虚拟机名,*****为共享文件名,我这里都为skynet,所以实际执行为:
VBoxManage setextradata skynet VBoxInternal2/SharedFoldersEnableSymlinksCreate/skynet 1
可以执行:
VBoxManage getextradata 虚拟机名 enumerate
命令查看设置是否成功
下一步我们进入虚拟机系统,将共享文件与linux里面的一个文件夹进行绑定。
在VirtualBox里面选中前面创建的虚拟机,点击工具栏上的启动按钮,直到进入一下界面:
输入前面设置的用户名和密码进行登录,输入 ifconfig命令,查看ip地址,如我们这里的ip地址是
192.168.40.117
下面我们用ssh方式连接系统,这样比较方便,可以复制和粘贴内容。可以直接用CMD工具ssh连虚拟机,不过最好装个ssh工具,如Xshell,这里我们用CMD方式来讲解连虚拟机。
打开一个文本编辑器,输入内容 “ssh XX@*********” ,并保存为bat格式(如:虚拟机.bat),XX是虚拟机的用户名,*********是虚拟机的IP,也就是上面的192.168.40.117;
双击上面生成的bat文件,连接虚拟机,第一次打开会提示
输入yes,然后会提示你输入密码,以后每次要连虚拟机就直接运行这个bat文件,直接输入密码就可以了,(ps:这里可以考虑生成一对公私钥文件,将公钥放到虚拟机里面,这样就不用每次都输入密码,这个实现方式以后再说,大家也可以网上查询相关教程,自己实现这个方法),输入密码之后,就连上了虚拟机系统。
在虚拟机中创建一个文件夹,用于跟windos上的共享文件进行绑定,执行命令:sudo mkdir /app
安装虚拟文件工具,执行命令: sudo apt-get install virtualbox-guest-utils
将新建的文件与共享文件进行绑定,执行命令: sudo mount -t vboxsf skynet /app
设置开机自动挂,执行 sudo vim /etc/fstab 在编辑的fstab文件后面下面这一行:
skynet /app vboxsf defaults 0 0
然后保存退出 ,这样我们就把windos下的共享文件夹skynet与虚拟机中的/app目录固定绑定在一起了,重启虚拟机,我们进入虚拟机的 /app目录,cd /app , ls,看到里面已经有skynet的代码了
我们想要编译skynet,还需要有几个软件的支持,执行以下命令:
sudo apt install gcc
sudo apt install autoconf
sudo apt install libreadline-dev
sudo apt install make
出现Do you want to continue? [Y/n]提示,直接输入y
进入skynet源码目录 cd /app/skynet
执行编译 make linux
没有报错,说明编译成功
在 /app/skynet目录运行 ./skynet examples/config ,我们可以看到以下输出,说明启动成功
我们再次双击前面建立的批处理文件,重新建立一条ssh连接,进入 /app/skynet目录运行: ./3rd/lua/lua examples/client.lua ,我们将看到以下输出:
说明服务器处理正常;
再次建立一条到虚拟机的ssh连接,用于验证skynet的监控功能,输入以下命令:
telnet 127.0.0.1 8000 ,提示如下,说明监控正常
试试skynet的几个常用监控命令:list\mem\stat\netstat
一切ok,至此我们就可以很方便地在windos下开发skynet的c和lua代码,在linux系统运行和调试了
后记:skynet的代码相对还是比较难读,其只能在linux下运行调试也是个槽点,对很多人来说学习和使用都不是很方便。笔者从上家公司接触了golang语言,发现真是个简单方便地语言,其简单的语法、相对脚本语言的高效运行、跨平台编译等功能都让人倾心,如以后有机会有时间,希望自己能用go语言重写一版skynet的实现 。