skynet学习笔记01— skynet开发环境搭建(超详细)与第一个skynet程序

01、前置准备

开发所在目录

shell 复制代码
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ pwd
/home/mhzzj/work/skynetStudy

前置准备

shell 复制代码
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ sudo apt install lua5.3
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ apt install git
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ sudo apt-get install git build-essential readline-dev autoconf

mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ git clone https://github.com/cloudwu/skynet.git          
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ git clone https://github.com/jemalloc/jemalloc.git       
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ cp -r jemalloc/* skynet/3rd/jemalloc/		

02、编译Skynet

shell 复制代码
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ cd skynet/

# 编译前的skynet文件夹
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ls
3rd  examples  HISTORY.md  LICENSE  lualib  lualib-src  Makefile  platform.mk  README.md  service  service-src  skynet-src  test

# 编译
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ make linux

# 编译后的文件夹
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ls
3rd  cservice  examples  HISTORY.md  LICENSE  luaclib  lualib  lualib-src  Makefile  platform.mk  README.md  service  service-src  skynet  skynet-src  test

03、Skynet运行

服务端

shell 复制代码
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ./skynet examples/config

客户端

shell 复制代码
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ./3rd/lua/lua examples/client.lua

04、skynet目录介绍与配置说明

目录结构

shell 复制代码
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ls
3rd  examples  HISTORY.md  LICENSE  lualib  lualib-src  Makefile  platform.mk  README.md  service  service-src  skynet-src  test
  • 3rd #第三方支持库,包括LUA虚拟机,jmalloc等
  • lualib #lua语言封装的常用库,包括http、md5
  • lualib-src #将c语言实现的插件捆绑成lua库,例如数据库驱动、bson、加密算法等
  • service #使用lua写的Skynet的服务模块
  • service-src #使用C写的Skynet的服务模块
  • skynet-src #skynet核心代码目录
  • test #使用lua写的一些测试代码

配置说明

/home/mhzzj/work/skynetStudy/skynet/examples/config

lua 复制代码
include "config.path"
thread = 8 -- 启用的工作线程数量,一般配置为CPU核心数
logger = nil
logpath = "."
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
start = "main"	-- 主服务入口
bootstrap = "snlua bootstrap"	-- The service for bootstrap
standalone = "0.0.0.0:2013"
-- 用C语言编写的服务模块的路径
cpath = root.."cservice/?.so"

/home/mhzzj/work/skynetStudy/skynet/examples/config.path

lua 复制代码
root = "./"
--服务脚本路径,包括skynet框架自带的一些服务和自己写的服务
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua;"..root.."test/?/init.lua"
-- lua脚本加载器,指定skynet的loader.lua
lualoader = root .. "lualib/loader.lua"
-- 程序加载lua脚本时,会搜索这个lua_path配置的路径
lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua"
-- 用C语言编写的程序库(.so文件)的路径
lua_cpath = root .. "luaclib/?.so"
snax = root.."examples/?.lua;"..root.."test/?.lua"

05、hello world

项目结构

myMain.lua

lua 复制代码
local skynet = require "skynet"

skynet.start(function()
	skynet.error("[start main] hello world")
	-- TODO 启动其他服务
	skynet.exit()
end)

配置文件

shell 复制代码
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ cp examples/config examples/myconfig
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ cp examples/config.path examples/myconfig.path

myconfig配置如下:

lua 复制代码
include "myconfig.path" --更改路径文件
thread = 8
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
start = "myMain"	-- 更改启动文件
bootstrap = "snlua bootstrap"	-- The service for bootstrap
standalone = "0.0.0.0:2013"

myconfig.pat配置如下:

启动hellworld

06、源码

https://gitee.com/mhz-zzj/skynet-study

PS:后续代码会随着笔记更新而更新

相关推荐
多多*1 分钟前
OJ在线评测系统 登录页面开发 前端后端联调实现全栈开发
linux·服务器·前端·ubuntu·docker·前端框架
卑微的码蚁4 分钟前
服务器相关问题
运维·服务器
博洋科技5 分钟前
网站建设的服务器该如何选择?
运维·服务器·网站建设·保定响应式网站建设·保定h5网站建设·保定网站建设
人类群星闪耀时10 分钟前
服务器管理:从零开始的服务器安装与配置指南
运维·服务器
河南宽信李工1503806 16862 小时前
测绘航空摄影专项资质在洛阳市的获取流程
服务器
学习向前冲2 小时前
AD域控服务器
运维·服务器
青柠视频云2 小时前
青柠视频云——视频丢包(卡顿、花屏、绿屏)排查
服务器·网络·音视频
hgdlip2 小时前
查看ip地址的方法有几种?探索多样方法
运维·服务器·ip地址
danplus3 小时前
node发送邮件:如何实现Node.js发信功能?
服务器·node.js·外贸开发信·邮件群发·蜂邮edm邮件营销·邮件接口·营销邮件
BeyondESH3 小时前
Linux线程同步—竞态条件和互斥锁(C语言)
linux·服务器·c++