skynet 初探
skynet是云风团队发布的一个开源的服务器框架。
底层采用C编写,逻辑层通常用lua。非常适合作为游戏的服务器框架。
学习skynet,可能涉及到操作系统,window,linux,游戏服务器等方方面面的知识,是一个不可多得的开源项目。
作为菜鸟的希望把学习的过程记录下来,无论对于面试和工作都有莫大的帮助。
官方的指南 https://github.com/cloudwu/skynet/wiki/GettingStarted
今天第一篇,首先来搭建skynet。分为以下四个步骤:
1.ubuntu
2.samba
3.git clone源码
4.build skynet
1.ubuntu
官方推荐使用ubuntu作为开发skynet的环境,也有社区的同学提供了window版,但未知问题较多。
新手还是使用官方推荐的ubuntu好了。首先要安装一个vmware虚拟机,再下载ubuntu的最新iso镜像。
对于程序猿来讲小case啦,忽略不讲。
2.samba
既然用到lua语言开发,我还是习惯使用sublime作为编辑器开发。而且以后打算用quick-cocos-2d或者window api作为客户端,需要一个linux和windows交互共享的方法。
samba是一个可以提供windows和linux共享的软件。因此需要搭建samba服务器环境。这里也略过不表。网上超多教程。搭建好之后,在ubuntu查看ip地址,在windows添加网络,就可以linux和windows互访了。
3.接着我们从github上clone源码
git clone https://github.com/cloudwu/skynet.git
4.最后开始搭建skynet
make linux
简单的编译。总共遇到了下面几个问题:
4.1 readline.h找不到
其实是没装lua。需要安装lua5.3以上版本。
4.2 jemalloc找不到
需要安装jemalloc。jemalloc是一种内存分配算法。区别于c语言里的malloc,效率更高。
安装jemalloc的过程中提示缺少m4。m4是一个宏处理器。
4.3 缺少autoconf
autoconf是一种自动生产Makefile的软件。
这里插一个知识。ubuntu安装软件有三种方法。apt-get,dpkg安装deb和make install安装源码包
a.apt-get install xxx。需要联网。上面的lua安装用到此方法。
b.dpkg -i package.deb。从下载好的deb包安装。
c.编译安装源码包。通常4个步骤,从官网下载压缩包
解压 tar -zxvf xxxx
配置 ./configure --prefix=安装路径
编译 make
安装 make install
上面的jemalloc,m4和autoconf都是源码包安装法。其中设置安装路径--prefix时还要考虑环境变量$PATH,需要安装到环境变量路径中,或者自己增加环境变量。
$PATH 可以查看当前的环境变量
安装好jemalloc,autoconf,lua等支持后,再在skynet目录下make linux,则算编译成功。