在满足以下要求的机器上,可以将Kurento Room应用程序安装为系统服务(例如kurento-room-demo)。
本节介绍如何部署(安装,配置和执行)Room Demo应用程序。 我们还提供了一种方法来运行演示,而不诉诸于系统级安装。
** 系统需求 **
Ubuntu 14.04
Git (to obtain the source code)
Java JDK version 8
Maven (for building from sources)
Bower (which in turn requires Node.js)
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs
npm install -g bower
Kurento Media Server 或连接至少有一个正在运行的实例(要按照官方安装指南)
Installation procedures
Demo binaries
目前,没有Kurento房间演示的二进制版本。 为了部署一个新的演示服务器,需要从源代码构建它。
$ git clone https://github.com/Kurento/kurento-room.git
$ cd kurento-room
# checkout the latest tag
$ git checkout $(git describe --abbrev=0 --tags)
Build from source
该演示已配置为在Maven构建的打包阶段生成压缩归档。 要获得它,建立kurento-room-demo项目及其所需的模块:
$ cd kurento-room
$ mvn clean package -am -pl kurento-room-demo -DskipTests
现在解压生成的执行二进制文件:
$ cd kurento-room-demo/target
$ unzip kurento-room-demo-6.6.0.zip
未压缩二进制文件的目录结构:
bin/ : 包含安装和执行脚本
files/ : 演示的可执行文件JAR文件和其他配置文件
sysfiles/ : 在作为系统服务安装时使用
Configuration
当以正常的用户权限执行演示时,配置文件kurento-room-demo.conf.json位于文件文件夹中。 当将演示应用程序安装为系统服务时,配置文件将位于/etc/kurento内。
$ cd kurento-room-demo-6.6.0
$ vim files/kurento-room-demo.conf.json
## or ##
$ vim /etc/kurento/kurento-room-demo.conf.json
此文件的默认内容:
{
"kms": {
"uris": ["ws://localhost:8888/kurento", "ws://127.0.0.1:8888/kurento"]
},
"app": {
"uri": "https://localhost:8443/"
},
"kurento": {
"client": {
//milliseconds
"requestTimeout": 20000
}
},
"demo": {
//mario-wings.png or wizard.png
"hatUrl": "mario-wings.png",
"hatCoords": {
// mario-wings hat
"offsetXPercent": -0.35F,
"offsetYPercent": -1.2F,
"widthPercent": 1.6F,
"heightPercent": 1.6F
//wizard hat
//"offsetXPercent": -0.2F,
//"offsetYPercent": -1.35F,
//"widthPercent": 1.5F,
//"heightPercent": 1.5F
},
"loopback" : {
"remote": false,
//matters only when remote is true
"andLocal": false
},
"authRegex": ".*",
"kmsLimit": 1000
}
}
具有以下主要含义:
kms.uris是一个WebSocket地址数组,用于初始化KurentoClient实例(每个实例代表一个Kurento Media Server)。在默认配置中,对于相同的KMS,应用程序将创建两个KurentoClient对象。这个演示的KurentoClientProvider实现org.kurento.room.demo.FixedNKmsManager)将在循环基础上返回KurentoClient实例,或者,如果用户的名称遵循某个模式,将返回较少加载的实例。模式检查是硬编码的,SLA用户被认为是那些以字符串special(例如specialUser)开头的用户。
kurento.client.requestTimeout是一个调整,以防止在重负载(例如很多同行)KMS通信中的超时。超时的默认值为10秒。
app.uri是演示应用程序的URL,主要用于构建媒体过滤器(例如帽子过滤器)中使用的图像的URL。此URL必须可从kms.uris中定义的任何KMS访问。
demo.hatUrl将用于FaceOverlayFilter的图像设置为在用户按下演示界面中的相应按钮时应用于流媒体。映像的文件名是相对于静态Web资源文件夹img/。
demo.hatCoords表示配置覆盖图像所需的参数的JSON编码。我们提供两个帽子图像,mario-wings.png和wizard.png的坐标。
demo.loopback.remote如果为true,用户将看到他们自己的视频使用来自服务器的环回流。因此,如果用户在她的视频流上启用帽子过滤器,她将能够在应用过滤器之后可视化最终结果。
demo.loopback.andLocal如果为true,除了显示环回媒体之外,客户端接口还将提供原始(和本地)媒体流。
demo.authRegex是一个用户名模式,允许创建一个房间,只有当它匹配模式。这是在获取KurentoClient的实例的调用期间完成的,如果指定了模式并且它与名称不匹配,提供程序将抛出异常。
demo.kmsLimit是可以在KurentoClient中创建的最大管道数。
HTTPS
应用程序使用包含自签名证书的Java密钥库(keystore.jks),该证书位于与JAR可执行文件相同的文件夹中。
密钥库的配置是从典型的application.properties文件读取的,在启动应用程序时由Spring Boot框架读取。 虽然在开发期间可以使用默认名称,但为了安装,我们已将名称更改为kurento-room-demo.properties。 在安装演示之后,可以直接在files/文件夹中或在服务的配置文件夹(/etc/kurento)中进行编辑。
任何更改(如密钥库的名称或密码)都可以直接应用到此文件中。
这些设置由应用程序自动读取(不需要在命令行上)。
server.port: 8443
server.address: 0.0.0.0
server.ssl.key-store: keystore.jks
server.ssl.key-store-password: kurento
server.ssl.keyStoreType: JKS
server.ssl.keyAlias: kurento-selfsigned
为了禁用HTTPS,要删除或重命名文件,或删除包含ssl的那些行,并将server.port的值更改为更合适的值(仅在使用带有SSL的安全代理时才推荐)。
server.address配置嵌入式Tomcat容器绑定到的IP地址(默认值为0.0.0.0,它在所有可用地址上侦听)。 在通过指示回送IP并通过安全代理服务所有连接来保护应用程序时非常有用。
Logging configuration
可以通过编辑文件kurento-room-demo-log4j.properties(也可以在文件文件夹(或用于系统范围安装的/ etc/kurento/)中)来覆盖默认日志配置。
$ cd kurento-room-demo-6.6.0
$ vim files/kurento-room-demo-log4j.properties
## or ##
$ vim /etc/kurento/kurento-room-demo-log4j.properties
在其中,可以设置服务器的输出日志文件的位置,默认位置将是kurento-room-demo-6.6.0 / logs / kurento-room-demo.log(或/ var / log / kurento / kurento -room-demo.log用于系统范围的安装)。
要更改它,请将$ {application.log.file}变量替换为系统上的绝对路径:
log4j.appender.file.File=${application.log.file}
# e.g. -->
log4j.appender.file.File=/home/user/demo.log
Running the application
在构建和解压缩安装文件后,有两个选项用于运行演示应用程序服务器:
user-level execution - 不需要额外的安装步骤,可以在解压缩安装程序后立即完成
system-level execution - 需要将演示应用程序作为系统服务安装,这样可以在系统重新启动后自动启动
在这两种情况下,应用程序都使用Spring Boot框架在嵌入式Tomcat容器服务器中运行,因此不需要在现有的servlet容器中部署。 如果这是一个要求,则必须对项目的构建配置(Maven)进行修改,以便代替具有依赖关系的JAR,构建过程将生成WAR文件。
Run at user-level
配置好服务器实例后,只需执行启动脚本:
$ cd kurento-room-demo-6.6.0
$ ./bin/start.sh
Run as daemon
首先在构建和解压缩生成的二进制文件后安装演示。 需要sudo权限才能将其安装为服务:
$ cd kurento-room-demo-6.6.0
$ sudo ./bin/install.sh
服务kurento-room-demo将自动启动。
现在,您可以按照上一节中所述配置Room demo服务器,然后重新启动服务。
$ sudo service kurento-room-demo {start|stop|status|restart|reload}
Troubleshooting
对于快速启动和故障排除演示使用以下命令从lib文件夹执行fat jar:
$ cd kurento-room-demo-6.6.0/lib
$ java -jar kurento-room-demo.jar
Version upgrade
要更新到较新版本,请重复安装过程。