Micro-GNSS服务的布署和维护
安装包和许可文件
流媒体服务交付时,将提供一个安装包文件和一个许可文件。
安装包文件为micro-gnss-release-x.x.x.zip
(其中x.x.x
为版本号)压缩包文件。压缩包内包含以下文件:
文件名 | 说明 |
---|---|
config/application.yml | 配置文件1 |
config/config.json | 配置文件2 |
micro-gnss.service | Micro-GNSS 服务的systemd 单元文件 |
micro-gnss-x.x.x.jar | Micro-GNSS 服务Jar包(其中x.x.x 为版本号) |
pwd-md5-1.0.0.jar | API用户密码摘要计算工具程序 |
start.sh | 程序启动脚本文件 |
许可文件为micro-gnss-cert.json
,此文件另行交付。
程序的安装
本文假设:
- 操作系统为
Ubuntu Server 20.04
,并已经完成一般性操作系统环境的准备 - 域名为:
n11.gratour.info
,按下文配置时,应改为实际的域名 - 操作系统用户名为:
streaming
,按下文配置时,应改为实际的用户名 - Java使用JDK版本,安装在
/opt/jdk-11
Micro-GNSS
服务依赖于Streaming
服务,在安装启动Micro-GNSS
之前,请确保已经安装并启动了Streaming
服务(Streaming
服务可安装在本机,也可安装在其它机器)
程序端口规划
Micro-GNSS
服务需要在以下端口监听(均为TCP协议),部分只在本机内内部使用,部分需要开放内网访问,部分需要开放外网访问。
对于需要外网访问的端口,本文假设外网端口和内网端口一致。
默认端口号 | 本机内部监听 | 内网访问需求 | 外网访问需求 | 用途 |
---|---|---|---|---|
1974 | Y | 本地数据库端口(内部使用) | ||
1975 | Y | 终端JT/T 808协议接入端口 | ||
1976 | Y | 终端ADAS附件接收端口 | ||
1977 | Y | Y | Micro-GNSS 对外API接口端口(https) | |
1978 | Y | Micro-GNSS 网关对接API接口端口(https) | ||
1979 | Y | FTP信令端口 | ||
1980-1999 | Y | FTP数据端口(passive模式),应设置20个端口号或以上,内外网端口号必须一致 |
目录规划
/opt/strm-fs
目录:用于Streaming
服务和Micro-GNSS
服务存储服务端音视频转储文件、附件等文件/opt/micro-gnss
目录:用于安装Micro-GNSS
服务/opt/certs
目录:用于存放域名的SSL证书文件,此目录应可为服务执行用户(本文假设为streaming
)读取
创建这两个目录并将目录属主改为规划的运行用户(本文假设为streaming
):
sudo mkdir /opt/micro-gnss
sudo chown streaming:streaming /opt/micro-gnss
sudo mkdir /opt/strm-fs
sudo chown streaming:streaming /opt/strm-fs
以上,如果Streaming
服务也安装在本机,并且/opt/strm-fs
目录已经创建,则上面的命令中的创建/opt/strm-fs
目录的步骤略过。
安装 Micro-GNSS 服务程序
- 解压压缩包文件到
/opt/micro-gnss
目录:
unzip micro-gnss-release-x.x.x.zip -d /opt/micro-gnss
- 修改
/opt/micro-gnss/start.sh
文件中的JAVA_HOME
变量的赋值(下图第一个黄色荧光部分),使之符合实际Java的安装路径(此处安装的是JDK版),并将最后一行的命令行的jar文件路径改为实际的文件路径(下图第二个黄色荧光部分):
- 为
/opt/micro-gnss/start.sh
添加可执行属性:
chmod +x start.sh
- 修改
/opt/micro-gnss/micro-gnss.service
文件中的WorkingDirectory
属性,使之符合Micro-GNSS
服务实际的安装目录; 修改User
属性为执行服务的用户的用户名;修改ExecStart
属性中的黄色荧光部分,改为start.sh
文件的实际路径:
- 将
/opt/strm/micro-gnss.service
复制到/etc/systemd/system
目录下,并激活(enable
)服务(但先不要启动,因为后面还有一些配置要完成):
sudo cp /opt/micro-gnss/micro-gnss.service /etc/systemd/system/
sudo systemctl enable micro-gnss
- 将域名的JKS格式的SSL证书文件复制到某个
streaming
用户可读取的目录,这里假设为/opt/certs
目录 - 按实际情况和/或需要修改
/opt/micro-gnss/config/application.yml
文件:
中的server.port
属性的值为Micro-GNSS
服务API接口端口的端口号;
修改server.ssl.key-store
属性的值设为域名SSL证书文件的文件路径;
修改server.ssl.key-store-password
属性的值为证书文件的密码;
修改server.ssl.key-alias
属性的值为密钥别名。
文件的初始内容大致如下:
文件中的黄色荧光标注的属性说明如下:
属性名 | 数据类型 | 修改说明 |
---|---|---|
gnss.instance-id | 字符串 | 实例ID;可分配任意要可见ASCII字符;如果整个系统中(即使不在同一台机器上)有多个Micro-GNSS 服务实例,则应分配不同的ID给每个实例 |
gnss.data-path | 字符串 | 本地数据存储文件目录;一般为Micro-GNSS 服务的安装目录下的data 子目录;必须为服务执行用户可读写的目录;如果目录不存在,则服务在启动时将创建该目录 |
server.port | 整数 | Micro-GNSS 服务API接口的端口号;此端口需要外网访问,如不开放外网,则只能内网访问 |
server.private-port | 整数 | Micro-GNSS 服务网关对接模式下的API接口的端口号,此端口不应开放外网访问 |
server.ssl.key-store | 字符串 | 域名SSL证书文件的文件路径 |
server.ssl.key-store-password | 字符串 | 域名SSL证书文件的密码 |
server.ssl.key-alias | 字符串 | 域名SSL证书文件的密钥别名 |
- 将许可文件
micro-gnss-cert.json
文件复制到/opt/micro-gnss/config
目录下(不要修改此文件的内容) - 预先设计或随机生成一个长度大于等于8的API访问用户的密码(此密码用于登录接口),然后执行
/opt/micro-gnss/pwd-md5-1.0.0.jar
工具程序以生成这个密码的摘要:
/opt/jdk-11/bin/java -jar /opt/micro-gnss/pwd-md5-1.0.0.jar
命令发出后,将出提示:
Please input the password:
此时输入此前设计好或随机生成的API密码,注意,输入密码时,程序不回显。回车后程序将输出所输入密码的随机填充数据(pwdSeed
)及其摘要(pwdMd5
),如下图:
记下pwdSeed
和pwdMd5
这两项数据,后面设置config.json
文件时需要用到。
- 按实际情况和/或需要修改
/opt/micro-gnss/config/config.json
文件:
文件的初始内容大致如下:
文件中的各属性说明如下:
属性名 | 数据类型 | 修改说明 |
---|---|---|
domain | 字符串 | 服务器的域名 |
ip | 字符串 | 服务器的IP,必填 |
fs.rootPath | 字符串 | 服务转储文件根目录 |
fs.avUploadCleanup.enabled | 布尔值 | 是否执行终端上传的录像文件清理;一般应设为true |
fs.avUploadCleanup.cron | 字符串 | 执行终端上传的录像文件自动清理 Spring CRON 调度时间表达式,服务将依照此表达式定义的时间执行周期性的清理工作 |
fs.avUploadCleanup.keepDays | 整数 | 执行终端上传的录像文件自动清理时,保留的最近上传文件的天数;上传时间在此天数内的文件不会被清理掉;应大于0 |
db.username | 字符串 | 本地数据库用户名,默认为sa ,不要修改 |
db.pwd | 字符串 | 本地数据库密码,默认为空字符串,不要修改 |
db.users[*].userName | 字符串 | API访问用户1的用户名 |
db.users[*].pwdSeed | 字符串 | API访问用户1的密码填充数据,填入此前pwd-md5-1.0.0.jar 程序产生的pwdSeed 数据即可 |
db.users[*].pwdMd5 | 字符串 | API访问用户1的密码摘要数据,填入此前pwd-md5-1.0.0.jar 程序产生的pwdMd5 数据即可 |
db.port | 整数 | 本地数据库的服务监听端口,内部使用,只要不与操作系统中的其它服务的端口号冲突即可 |
jt808.endPoints[*].port | 字符串 | 终端JT/T 808协议接入端口;此端口要求外网访问 |
api.enabledTermCmds | 字符串数组 | 允许经由POST /term_cmd 接口下发的指令的消息号(各指令的消息号请参阅JT/T 808标准)字符串组成的数组;可设为空数据 |
spi.urlPrefix | 字符串 | 网关对接模式下的企业应用端的API地址,设置为空时,spi.extTokenValidate , spi.gatewayExternalized , spi.onlineTermsQrySupport 等设置无效 |
spi.extTokenValidate | 布尔值 | 是否启用访问令牌的外部验证,参见GET /token 接口 |
spi.gatewayExternalized | 布尔值 | 是否启用网关对接模式 |
spi.onlineTermsQrySupport | 布尔值 | 网关对接模式中,企业应用端是否提供GET /online_terms 接口 |
strm[*].instanceId | 字符串 | 流媒体服务的实例ID,本设置中唯一即可;用于工具程序https://n11.gratour.info:3001中列示已注册媒体服务时,作为区分多个流媒体服务的标识 |
strm[*].disabled | 布尔值 | 是否禁用此流媒体服务注册项,禁用后,该注册项不起作用。需要至少一个启用的流媒体服务注册项 |
strm[*].apiUrl | 字符串 | 此流媒体服务的API地址 |
strm[*].username | 字符串 | 登录到此流媒体服务的用户名,此用户名应为/opt/strm/config/trusted-clients.json 文件中的其中一个用户的用户名(username ) |
strm[*].pasword | 字符串 | 登录到此流媒体服务的密码,此密码应为/opt/strm/config/trusted-clients.json 文件中的其中一个用户的密码(password ) |
almAtt.port | 整数 | Micro-GNSS 内置的主动安全附件接收服务的监听端口号;此端口要求外网访问 |
almAtt.audoUpload | 布尔值 | 是否启用主动安全附件自动提取功能,禁用时,需要调用接口才启动附件提取任务 |
almAtt.lvl2AlmOnly | 布尔值 | 是否只提取二级报警产生的主动安全附件;仅当almAtt.audoUpload 设为true 时有效 |
almAtt.filterAlm | 布尔值 | 是否对主动安全报警进行报警类型过滤。当设为true 时,服务仅提取almAtt.acceptAlmTypes 设置的报警类型产生的附件;本设置项仅当almAtt.autoUpload 设为true 时有效 |
almAtt.acceptAlmTypes | 字符串数组 | 主动安全报警类型代码列表,各类型代码参见ADAS报警类型编码;本设置项仅当almAtt.autoUpload 和almAtt.lvl2AlmOnly 均为true 时有效 |
almAtt.cleanup.enabled | 布尔值 | 是否执行主动安全附件文件自动清理;一般应设为true |
almAtt.cleanup.cron | 字符串 | 主动安全附件文件自动清理 Spring CRON 调度时间表达式;服务将依照此表达式定义的时间执行周期性的主动安全附件文件清理工作 |
almAtt.cleanup.keepDays | 整数 | 执行主动安全附件文件自动清理时,保留的最近转储文件的天数;提取完成时间在此天数内的文件不会被清理掉;应大于0 |
ftp.port | 整数 | Micro-GNSS 内置的FTP服务的信令端口;此端口要求外网访问 |
ftp.passivePorts | 字符串 | FTP服务的数据端口(passive模式),格式支持范围,如:1980-1999 ,也可单独指定,如:1980,1982,3000-3017 ;应设置20个端口或以上,内外网端口号必须一致 |
fpt.users[*].username | 字符串 | FTP用户名,不要修改此项 |
ftp.users[*].upload | 布尔值 | 是否允许该用户上传,不要修改此项 |
ftp.users[*].download | 布尔值 | 是否允许该用户下载,不要修改此项 |
根据前述端口需求,设置好防火墙和端口映射
启动服务
sudo systemctl start micro-gnss
日常维护
服务的启动、停止、重启
- 启动
Streaming
服务可执行:
sudo systemctl start micro-gnss
- 停止
Streaming
服务可执行:
sudo systemctl stop micro-gnss
- 重启
Streaming
服务可执行:
sudo systemctl restart micro-gnss
日志文件
日志文件为服务安装目录(本文为opt/micro-gnss
)下的log
子目录下的gnss.log
文件。