首页 > Ubuntu 12.04 64bit或者CentOS 6.3 64bit上搭建OpenRTMFP/Cumulus服务器

Ubuntu 12.04 64bit或者CentOS 6.3 64bit上搭建OpenRTMFP/Cumulus服务器

Ubuntu 12.04 64bit或者CentOS 6.3 64bit上搭建OpenRTMFP/Cumulus服务器

2013-12-25





1.从官网下载源码包

cd ~/progrom_develop

git clone git://github.com/OpenRTMFP/Cumulus.git

tree -L 2 Cumulus

cd Culumus

现在进入该目录大致了解一下目录结构.



注意:

Cumulus是跨平台的,在生成时,都要先生成CumulusLib,再生成CumulusServer.





2.安装依赖库

Cumulus需要依赖OpenSSL, POCO, LuaJIT

下面是他们相关的主页:

http://pocoproject.org/

http://luajit.org/download.html





在Ubuntu 12.04下执行sudo apt-get install libssl-dev 

或者在CentOS 6.3下面执行

yum -y install openssl-devel

下面的POCO和LuaJIT采用源码包安装方式:

wget http://pocoproject.org/releases/poco-1.4.6/poco-1.4.6p2.tar.gz(这个在CentOS 6.3上测试过,注意编译时间较长)

或者

wget https://github.com/downloads/pocoproject/poco/poco-1.4.5.tar.gz

tar zxf poco-1.4.5.tar.gz

cd poco-1.4.5

./configure

make

sudo make install





wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz

tar zxf LuaJIT-2.0.2.tar.gz

cd LuaJIT-2.0.2

make

sudo make install





cd ../Cumulus





cd CumulusLib

make

cd ../CumulusServer

make





注意清除步骤刚好反过来:

cd CumulusLib

make clean

cd ../CumulusServer

make clean





3.配置并启动

在安装目录CumulusServer下面新增一个CumulusServer.ini文件来进行个性化配置,下面是可能的配置选项:

port: 默认1935, RTMFP server的默认端口,用于Cumulus server侦听进来的RTMFP请求

udpBufferSize:指定UDP接收和发送缓存的字节大小,假如你的OS的默认值小于重要的负载值,增加它的大小

threads: 指定Cumulus中线程池中线程个数,通常应大于或等于主机CPU的核数,默认会自动探测这个值,但是可能在具有CPU超线程技术的机器,或是在某些操作系统上有瑕疵.

keepAliveServer:服务器间周期性发送keep-alive保活包的秒数,默认15秒,合法值为5秒到255秒

keepAlivePeer:peer间周期性发送keep-alive保活包的秒数,默认10秒,合法值为5秒到255秒

publicAddress:客户端看到的外网地址,便于客户端重定向

servers.port: 接收进来的服务器连接的端口,注意服务器间的交互采用非加密的TCP通信,要确保安全,使用防火墙

servers.targets:在启动时要连接的CumulusServer地址列表(分号分隔),

smtp.host:配置SMTP主机去使用Cumulus提供的mail功能,默认localhost

smtp.port:配置SMTP端口去使用Cumulus提供的mail功能,默认25

smtp.timeout:配置SMTP超时会话的秒数去使用Cumulus提供的mail功能,默认60秒

logs.directory:写日志文件的目录,默认CumulusServer/logs

logs.name:日志文件的名称,默认log



下面是一个配置文件样例,它和CumulusServer放在相同的目录下面:

;CumulusServer.ini

port = 1985 

udpBufferSize = 114688

keepAlivePeer = 10

keepAliveServer = 15

[logs]

name=log

directory=/home/taoyx/program_develop/Cumulus/CumulusServer/logs





启动CumulusServer:

CumulusServer包含了一些启动参数,但是默认CumulusServer在生产环境下运行是优化过的,命令行的选项在开发和测试时比较有用.为了得到启动CumulusServer时的启动参数的完整描述,请使用如下命令

./CumulusServer --help

或者

./CumulusServer -h





否则,使用管理员权限去使用

./CumulusServer

简单启动

sudo ./CumulusServer --daemon

或者

sudo ./CumulusServer --daemon --pidfile=./CumulusServer.pid

启动后发现在当前目录下,自动生成了一个www目录,和pid文件,在上层父目录生成了logs目录.



4.基本使用方法

本地Flash Client可以通过如下语句连接

var nc:NetConnection = new NetConnection();

nc.connect("rtmfp://localhost/");

RTMFP默认是采用1935端口,如果你在CumulusServer的配置文件CumulusServer.ini中特别指定了其他端口,比如12345,你必须在URL中明示该端口,请使用如下方式:

nc.connect("rtmfp://localhost:12345/");





5.扩展CumulusServer--Server Application

CumulusServer包含一个很有威力的脚本引擎(使用LUA)来生成你自己的服务器应用,它允许使用灵活的脚本方式去加入你的特定需求来扩展Cumulus的行为.





5.1生成服务器应用

CumulusServer一启动后,它会在当前目录生成一个www文件夹作为自己的root目录,假如事先不存在www的情况下.你可以在该目录下生成若干子目录,一个子目录可以描述一个服务器应用,

当客户端连接到CumulusServer时,URL的path中指定了要使用的application,比如,如下url:

rtmfp://host:port/myApplication

将在CumulusServer/www/myApplication中搜索对应的application.

首次执行时,CumulusServer在www目录中生成和执行其中的文件main.lua,然后,当新客户端到来时,已经被生成的应用将被执行,除非上次main.lua已经被修改.事实上,当你修改main.lua时,对应的

应用将以动态方式重建,无须重启服务器.

注意:root Application在CumulusServer启动时创建和启动,但是,其他的server application在第一个客户端连接时开始.

启动CumulusServer后,会在可执行文件的目录下出现一个www目录,该目录的作用,就是作为 Server Application 的默认根目录。具体的对应关系如下:

rtmfp://host:port/                   ->     [CumulusServer folder]/www/main.lua (root application)

rtmfp://host:port/myApplication      ->     [CumulusServer folder]/www/myApplication/main.lua

rtmfp://host:port/Games/myGame       ->     [CumulusServer folder]/www/Games/myGame/main.lua

另外要提醒的是,如果main.lua文件被修改,则不需要重启CumulusServer,因为 Server Application 的创建是一种动态的方式。





每个应用由它的path区分,它恰好就是RTMFP URL连接中path部分, 拿上面的例子来说, root application在path中是一个空字符串, 但是另两个服务器应用的path值分别是/myApplication和

/Games/myGame





下面是一个非常简单的server application,将它保存为main.lua文件,放到www下面:

function onStart(path)

print("Server application '"..path.."' started")

end

function onStop(path)

print("Server application '"..path.."' stopped")

end



6.与Flash Player交互联调

先以调试模式重新开启Cumulus,注意按照ps查找到CumulusServer的进程号,比如4123,再使用

kill -9 4123

杀死Cumulus,再使用下面的命令重启:

sudo ./CumulusServer --pidfile=./CumulusServer.pid -l8 --dump=all

然后开启使用Flex Builder生成的flash player(另见后面的博文),我们将会在控制台看到如下交互信息:



更多相关:

  • 这里用散装版本的AutoScssStruct4Vue为例 先去https://github.com/accforgit/AutoScssStruct4Vue下载 然后把解压后的包放入C:UsersAdministrator.vscodeextensions(地址根据你自己的安装目录而定)    点开目录在资源管理器...

  • 网上搜到的结果大都不令人满意,这里综合了网上的结构,做了小许改动.希望对大家有帮助. 在Linux下的目录结构操作基本上使用opendir,readdir,closedir就够了. #include #include #include #include

  • 文章目录git 最小配置作用域git 创建本地仓库git log 查看版本演进.git 目录refs目录objectsgit 三种对象类型详解 (commit ,tree,blob)...

  • 一 . 进入目录权限 如果我在普通用户下创建了一个目录f1,然后使用chomd u-rwx,g-rwx,o-rwx之后,我在普通用户下想进入f1目录,权限不允许。 然后我切换到超级用户下,再次尝试进入到f1目录,这个时候允许进入。 然后回到普通用户下,只给f1的所有者读的权限,然后在普通用户下尝试进入,此时权限还是...

  • windows下rpc框架thrift的环境配置 引用链接: https://www.cnblogs.com/49er/p/7193829.html 最近在弄windows下 的Facebook的rpc 框架 thrift , 网上东西看了很多, 但是大都不能一篇到位, 这里总结了一下, 也记一下自己遇到的问题和解决的方法 这里...