首页 > Ubuntu 14.04 64bit上编译安装MonaServer并测试

Ubuntu 14.04 64bit上编译安装MonaServer并测试

1.安装依赖和要求

MonaServer基于C++ 11编写, 比如会用到std::thread, std::unique_ptr, 要求GCC版本至少为4.8.2

对于Ubuntu 14.04.2来说, 这是满足的





另外依赖OpenSSL和LuaJIT库

sudo apt-get install libssl-dev

LuaJIT采用源码安装方式, 官网地址

http://luajit.org/download.html

推荐从GitHub上面下载最新源码安装,master就是当前稳定版分支,当前是LuaJIT-2.0.3



git clone http://luajit.org/git/luajit-2.0.git

我发现git资源下载失败,就改为2.0.3版本的源码包下载

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

tar zxf LuaJIT-2.0.3.tar.gz

cd LuaJIT-2.0.3

make

sudo make install



2.下载源码编译

git clone https://github.com/MonaSolutions/MonaServer

cd MonaServer

make

如果编译出错, 使用下面的命令清除

make clean

编译完成后,使用

tree -L 2

我们会看到如下目录结构

我们看到除了生成可执行文件MonaServer以外, 各个目录下面会生成一个tmp临时目录用来存放编译生成的中间文件*.o, 最重要的目录是MonaServer, 另两个目录MonaBase和MonaCore仅是提供动态库调用.





3.配置

源码中没有发现配置文件MonaServer.ini, 将会使用默认值. 我们也可以在安装目录手动生成一个配置文件MonaServer.ini

MonaServer.ini中配置项解释:

host: clients和other servers看到的域名或是ip

socketBufferSize: socket接收和发送缓冲区字节大小

threads: Mona线程池线程个数, 通常等于或是大于CPU的virtual or physic core数, 默认会自动探测CPU核数

[application]

dir:包含data和www的目录

[servers]

port:接收其它incoming Servers连接的端口, 否则无法与其它Servers建立连接.注意Servers之间的连接是unencrypted TCP方式, 该端口应该在防火墙内部

targets: 启动时要连接的MonaServer地址, 分号分隔, 每10秒建立一次连接, url中的query部分包含token,比如

targets=192.168.0.2:1936?name=master&arg=val;192.168.0.3:1936

将会生成server对象的动态性质server.name,server.arg

[RTMFP]

port: 侦听incoming RTMFP request的端口,默认1935

keepaliveServer: servers之间keepalive包周期性发送的时间间隔(单位是秒),默认15s, 5s-255s都是合法的

[RTMP]

port: 侦听incoming RTMP request的端口,默认1935

[HTTP]

port: 侦听incoming HTTP request的端口,默认80

timeout: 当没有数据接收时,服务器kill掉所在connection的最长时间, 默认7秒

index: HTTP协议中默认的index文件名, 假如指定, 每个connection将被redirect到此index文件

[WebSocket]

timeout: 当没有数据接收时,服务器kill掉所在connection的最长时间, 默认120秒

[logs]

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

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

rotation: 在logs目录下存放日志文件个数



下面是MonaServer.ini的一个样本

;MonaServer.ini

socketBufferSize = 114688

[RTMFP]

port = 1985

keepAlivePeer = 10

keepAliveServer = 15

[logs]

name=log

directory=C:/MonaServer/logs



4.启动

MonaServer包含一些启动参数, 命令行选项仅用作开发和测试情况下, 查看完整的启动参数, 使用

sudo ./MonaServer -h



下面以管理员权限启动MonaServer

sudo ./MonaServer --daemon [--pidfile=/var/run/MonaServer.pid]

下面以命令行方式启动MonaServer:

sudo ./MonaServer --pidfile=/tmp/MonaServer.pid





5.测试

Flash client使用经典的NetConnection方式连接MonaServer

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

端口默认1935, 如果你在MonaServer.ini另有配置,请添加在localhost之后

下面的路径参数允许你连接到要有的Server Application

_netConnection.connect("rtmfp://localhost/myApplication");

下面我们打算测试MonaServer的功能, 按照MonaServer/FunctionalTests/README.txt的提示, 我们在可执行程序所在目录下面创建两个子目录www和data, 创建相应的符号链接

cd /home/taoyx/program/MonaServer/MonaServer

mkdir -p www

mkdir -p data

ln -s /home/taoyx/program/MonaServer/FunctionalTests/www/FunctionalTests  /home/taoyx/program/MonaServer/MonaServer/www/FunctionalTests

ln -s /home/taoyx/program/MonaServer/FunctionalTests/data/FunctionalTests  /home/taoyx/program/MonaServer/MonaServer/data/FunctionalTests

下面启动MonaServer:

sudo ./MonaServer --pidfile=/tmp/MonaServer.pid



在浏览器中打开

http://localhost/FunctionalTests/FunctionalTests.html

每次点击一个测试项目,运行完后,再选择下一个测试项目,再继续测试.目前发现后面的rtmfp等无法测试通过,需要研究源码,待后续研究.









最后使用Ctrl+C中断MonaServer,结束功能性测试.



参考文献

[1].http://blog.chinaunix.net/uid-11344913-id-4976154.html

[2].http://bbs.chinaffmpeg.com/forum.php?mod=viewthread&tid=254&extra=

[3].http://www.monaserver.ovh/installation.html



更多相关: