skynet环境搭建

0x00 预热

使用的linux环境是ubuntu 16.04。


0x01 开始配置

1.1先将环境下载下来

sudo apt-get install autoconf

sudo apt-get install libreadline-dev

git clone https://github.com/cloudwu/skynet.git

1.2编译skynet

cd skynet

sudo make linux


0x02 加载自定义服务


2.1  在skynet目录下创建 myexamples/e1 文件夹。创建config文件

root = "./"
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"   -- 启动的第一个服务以及其启动参数 service/bootstrap.lua
standalone = "0.0.0.0:2013"
luaservice = root.."service/?.lua;"..root.."myexample/e1/?.lua"
lualoader = root .. "lualib/loader.lua"
lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua"
lua_cpath = root .. "luaclib/?.so"
-- preload = "./example1/preload.lua"   -- run preload.lua before every lua service run
snax = root.."example1/?.lua;"..root.."test/?.lua"
-- snax_interface_g = "snax_g"
cpath = root.."cservice/?.so"
-- daemon = "./skynet.pid"

   2.2 编写server1.lua

-- 每个服务独立, 都需要引入skynet
local skynet = require "skynet"

-- 这里可以编写各种服务处理函数

skynet.start(function()
        print("==========Service1 Start=========")
        -- 这里可以编写服务代码,使用skynet.dispatch消息分发到各个服务处理函数(后续例子再说)
end)

2.3 编写main.lua

l skynet = require "skynet"

-- 启动服务(启动函数)
skynet.start(function()
    -- 启动函数里调用Skynet API开发各种服务
    print("======Server start=======")
    -- skynet.newservice(name, ...)启动一个新的 Lua 服务(服务脚本文件名)
    skynet.newservice("service1")

    -- 退出当前的服务
    -- skynet.exit 之后的代码都不会被运行。而且,当前服务被阻塞住的 coroutine 也会立刻中断退出。
    skynet.exit()
end)

2.4 启动    

./skynet ./myexamples/e1/config

出现以下信息,表示启动了自己编写的server

[:01000004] connect from 127.0.0.1:46904 4
[:01000006] LAUNCH harbor 1 16777221
[:01000004] Harbor 1 (fd=4) report 127.0.0.1:2526
[:01000005] Waiting for 0 harbors
[:01000005] Shakehand ready
[:01000007] LAUNCH snlua datacenterd
[:01000008] LAUNCH snlua service_mgr
======Server start=======
==========Service1 Start=========
[:01000009] LAUNCH snlua main
[:0100000a] LAUNCH snlua myserver
[:01000009] KILL self
[:01000002] KILL self


2.5 结束skynet

先查看skynet 是否执行

ps aux | grep skynet

reacher@ubuntu:~/skynet/myexamples/e1$ ps  aux|grep skynet
reacher   81191  0.1  4.3 595028 43508 ?        Sl   19:55   0:00 gedit /home/reacher/skynet/myexamples/e1/main.lua
reacher   81250  3.2  1.6 135464 16820 pts/4    Sl+  20:07   0:00 ./skynet ./myexamples/e1/config
reacher   81263  0.0  0.0  14228   944 pts/20   S+   20:07   0:00 grep --color=auto skynet

2.5.1 使用指令结束

kill 81250

Terminated
执行skynet端显示这条信息


2.5.2  使用脚本的模式

#! /bin/bash

MY_USERNAME=`whoami`

MY_PID=`ps -u ${MY_USERNAME} | grep skynet| awk '{print $1}'`

if [ -z $MY_PID ]; then
	echo "进程未启动..."
	exit 1;
fi
kill -10 $MY_PID
echo "进程skynet已经被终止"



你可能感兴趣的:(skynet)