自己怎么做网站首页郑州手工外发加工网
一、前言
最近,我在搞服务端的skynet框架,看看以后自己做些作品(skynet框架服务端+Unity客户端)。今天呢,我就先把skynet环境搞一下,讲讲流程,也方便想学习的同学,话不多说,我们开始吧~
二、关于Skynet
skynet是一个轻量级的网络游戏框架,也可用于许多其他领域。

建议大家看下云风的《[Skynet设计综述][Skynet 4]》,这里我不过多赘述,主要讲讲操作流程~
三、Ubuntu虚拟机
skynet需要运行在linux或macos系统中,这里作为演示,我使用Ubuntu虚拟机。下面我讲下Ubuntu虚拟机的安装过程。
1、Ubuntu系统镜像下载
首先我们需要先下载Ubuntu系统的iso文件,下面这些地址都可以下载,大家选择一个即可:
网易开源镜像:[http://mirrors.163.com/ubuntu-releases/][http_mirrors.163.com_ubuntu-releases]
Ubuntu官方:[http://releases.ubuntu.com/][http_releases.ubuntu.com]
Ubuntu中国官网:[https://ubuntu.com/download/alternative-downloads][https_ubuntu.com_download_alternative-downloads]
中科开源镜像:[http://mirrors.ustc.edu.cn/ubuntu-releases/][http_mirrors.ustc.edu.cn_ubuntu-releases]
阿里开源镜像:[http://mirrors.aliyun.com/ubuntu-releases/][http_mirrors.aliyun.com_ubuntu-releases]
浙江大学开源镜像:[http://mirrors.zju.edu.cn/ubuntu-releases/][http_mirrors.zju.edu.cn_ubuntu-releases]
我以Ubuntu 16.04.7版本为例,地址:[http://mirrors.163.com/ubuntu-releases/16.04.7/][http_mirrors.163.com_ubuntu-releases_16.04.7]

把iso文件下载到本地,

2、VirtualBox虚拟机软件
有了iso文件,需要将其安装到虚拟机中,而虚拟机需要运行在虚拟机软件上,所以,我们还需要先安装一个虚拟机软件。
虚拟机软件大家常用的是VMWare,这里我强烈推荐另一款虚拟机软件:VirtualBox,它轻量、开源免费,对于个人学习使用完全足够,五星推荐~
关于VirtualBox:
VirtualBox是一款开源虚拟机软件。VirtualBox是由德国Innotek公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在Sun被Oracle收购后正式更名成Oracle VM VirtualBox。
VirtualBox号称是最强的免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优异!它简单易用,可虚拟的系统包括Windows(从Windows 3.1到Windows 10、Windows Server 2012,所有的Windows系统都支持)、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android等操作系统!使用者可以在VirtualBox上安装并且运行上述的这些操作系统!
2.1、VirtualBox下载
VirtualBox我们可以从官网下载到,地址:[https://www.virtualbox.org/][https_www.virtualbox.org]

选择windows版本,点击下载,

下载完毕,

2.2、VirtualBox安装
双击安装包运行安装,过程没有什么特别的,这里不赘述~
安装成功后打开VirtualBox,界面如下:

2.3、创建虚拟机
点击菜单控制/新建,

填写虚拟机名称,设置虚拟机保存路径,如下,我设置为E:\ubuntu16,

设置内存大小,建议分配2G内存,

创建虚拟硬盘,



建议分配10G的虚拟硬盘空间,

虚拟机创建完成,如下

3、载入Ubuntu iso镜像
点击启动虚拟机,会提示选择启动盘,点击下面的小按钮,

点击注册,

选择我们刚刚下载的iso系统镜像文件,打开,可以看到列表中出现了我们的镜像,选中它,

点击启动,即可进入系统安装。
4、Ubuntu系统安装过程
点击Install Ubuntu,

点击Continue,

点击Install Now,

此时会弹个提示框,点击Continue,

时区填写China Time,然后点击Continue,

语言默认English,点击Continue,

接着输入账号密码,后面进入系统的时候要用到,这里提示我的密码弱(Weak password),由于只是自己学习使用,密码弱也没什么关系,点击Continue,

接着就是耐心等待它安装,

完成后,会提示需要重启,点击Restart Now,

进入下面这个界面时,按一下回车键,

输入刚刚设置的密码,

顺利进入系统,

四、安装必要的工具
1、安装git
我们需要通过git来下载skynet,所以必须先安装git,我们先打开终端,如下:

在终端输入下面的命令:(注意按回车后需要输入一次密码,并且密码不会显示出来,不要怀疑你的键盘)
sudo apt-get install git
如下:
安装完毕后,输入下面的命令检查下git是否安装成功了,
git --version
如果输出了版本号,则说明git已经安装成功了,

2、安装autoconf
编译skynet需要用到autoconf,在终端输入下面的命令来安装autoconf,
sudo apt-get install autoconf
如下:

安装完毕后,输入autoconf --version按回车,如果能输出版本号,则说明安装成功了,

3、安装gcc
编译skynet需要用到gcc,因为Ubuntu默认安装了gcc,所以我们这里就不用重复安装了,可以在终端中输入gcc --version,如果能输出版本号,则说明已经安装了gcc,

如果提示没有gcc,则执行sudo apt-get install gcc进行安装即可。
五、下载Skynet源码
在终端中执行下面的命令,
git clone https://gitee.com/mirrors/skynet.git
如下:

下载完毕后,我们打开文件夹浏览器,可以在Home目录中看到多了一个skynet文件夹,

进入skynet文件夹,就可以看到框架源码啦,

六、编译Skynet源码
在终端中进入skynet目录,
cd skynet
如下:

然后执行下面的命令:
make linux
此处你可能会报错,如下:

这是因为过程中去gitub下载jemalloc失败了,可以多试几次,编译成功后显示的输出内容如下:

我们可以在skynet目录中看到生成了一个可执行文件:skynet,如下:

七、运行Skynet案例
在终端中进入skynet目录后,执行下面的命令,
./skynet example/config
如下,可以看到服务启动成功了,

接下来,我们开启一个新的终端,

运行一个客户端来测试一下,先cd skynet进入目录,
然后执行如下命令:
./3rd/lua/lua example/client.lua
如下,每隔5秒就会给服务端发送一个heartbeat心跳包,

我们可以输入hello,服务器会回应一个world,如下:

八、写个Demo
想要自己写个Demo,得先知道skynet是如何工作的。
1、配置文件
运行skynet时,需要制定一个配置文件,例:
./skynet example/config
我们先看看这个config文件里面是啥,进入examples目录,打开config文件,

config文件内容如下:
include "config.path"-- preload = "./examples/preload.lua" -- run preload.lua before every lua service run
thread = 8
logger = nil
logpath = "."
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
start = "main" -- main script
bootstrap = "snlua bootstrap" -- The service for bootstrap
standalone = "0.0.0.0:2013"
-- snax_interface_g = "snax_g"
cpath = root.."cservice/?.so"
-- daemon = "./skynet.pid"
第一行引用了config.path文件,我们打开config.path文件,

内容如下:
root = "./"
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua;"..root.."test/?/init.lua"
lualoader = root .. "lualib/loader.lua"
lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua"
lua_cpath = root .. "luaclib/?.so"
snax = root.."examples/?.lua;"..root.."test/?.lua"
现在,我们把两个文件合在一起看,如下:
root = "./"
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua;"..root.."test/?/init.lua"
lualoader = root .. "lualib/loader.lua"
lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua"
lua_cpath = root .. "luaclib/?.so"
snax = root.."examples/?.lua;"..root.."test/?.lua"-- preload = "./examples/preload.lua" -- run preload.l