概述
本文档是一个对 ThingJS 项目离线部署包的获取、安装、配置、授权、更新、迁移等方面进行说明的技术文档。
本文档会以 ThingJS 平台“在线开发”为默认环境进行介绍。涉及 ThingJS 离线开发环境的内容会将与“在线开发”差异部分在各章节内容中增加小节补充说明。
说明
在 ThingJS 3D 可视化开发平台“在线开发”(https://www.thingjs.com) 、ThingJS离线开发等环境完成项目开发后,开发人员可将所完成开发的项目离线部署到自己的私有服务器上。这时候就会使用到该项目的“ThingJS项目离线部署包”。
“ThingJS 项目离线部署包”可由已开通“VIP 商业开发者”或购买“离线部署永久授权”的账号从“在线开发”环境进行下载;或由 ThingJS 离线开发环境生成。
ThingJS 免费用户无法下载项目离线部署包。当然,虽然免费用户不能下载离线部署包,但他们可在 ThingJS 平台完整测试 ThingJS API 调用及大部分功能。
(注:一般商业项目的开发和部署,建议通过购买 ThingJS 3D 可视化开发平台的“ThingJS 3D 可视化套餐”(https://www.thingjs.com/guide/price/) 来完成,以提高商业项目开发的便捷度和效率。)
硬件配置
安装服务器推荐配置
配置 | |
---|---|
CPU | 2G主频4核 |
内存 | 8G |
硬盘 | 80G,推荐SSD |
带宽 | 推荐100Mbps |
操作系统 | Linux x64, Windows x64 |
(注:(1)若需在 CPU 为 ARM 的 Linux 服务器上进行部署,请先咨询平台客服;
(2)不支持在 Docker 中进行部署。)
浏览器客户端推荐配置
配置 | |
---|---|
CPU | Intel i7 或同档 CPU 以上 |
内存 | 16G |
硬盘 | 80G,推荐 SSD |
显卡 | 独显 GTX1070 以上,2G 显存以上 |
离线部署包类型说明
“ThingJS 项目离线部署包”分为“临时部署包”和“永久部署包”两种类型。
临时部署包
“临时部署包”仅用于需项目离线部署的用户在离线部署环境测试之用。用户若需在私有服务器部署商业或正式应用的,请使用“永久部署包”。
已开通“VIP 商业开发者”的账号可在“在线开发”中获取“临时部署包”;购买“离线开发授权”的用户可在离线开发环境生成项目的“临时部署包”。
“临时部署包”在完成授权后(自助在 ThingJS 网站获取授权码),默认有效期为 7 天;“临时部署包”的 3D 可视化项目画面背景中会显示 ThingJS 官方水印;7 天授权过期后,原“临时部署包”访问链接将自动显示项目离线部署管理页面,无法再正确加载原 3D 可视化项目画面。此时,用户可再次申请一个临时授权码,或升级到“永久部署包”重新激活来使用。
“ThingJS 项目离线部署包”含“更新项目”功能。无论 3D 场景变更、脚本变更、资源变更等,开发者都可对已部署项目进行更新操作。但“更新项目”功能对“临时部署包”项目是有限制的。对于用“临时部署包”部署的项目,若需要更新的,只能使用“永久部署包”进行项目更新。完成更新后,该“临时部署包”部署的项目也会自动升级为“永久部署包”项目。也就是说,“临时部署包”项目无法通过另一个“临时部署包”来完成更新。
实际上,“临时部署包”不支持作为“更新部署包”进行任何项目更新。无论原部署项目是“临时部署包”项目,还是“永久部署包”项目均不支持。
(注:“临时部署包”升级为“永久部署包”时,机器码文件将自动更新升级,会导致当前授权失效。此时,需申请永久授权码方可再次激活授权。)
永久部署包
只有购买“离线部署永久授权”的账号才可获取“永久部署包”。
“永久部署包”必须使用“永久授权码”进行授权激活(首次获取需联系平台商务人员)。完成授权后授权将永久有效,同时在 3D 可视化项目画面背景中也不会显示 ThingJS 官方水印。
“永久部署包”支持作为“更新部署包”进行项目更新。“永久部署包”在授权成功后,将拥有“服务器迁移”功能。
(注:如需购买“离线部署永久授权”,请咨询在线客服,或者拨打 ThingJS 平台客服电话 400-666-9832。)
获取
准备 CPS 文件
需使用 ThingJS 平台项目离线部署包功能,需先开通了 VIP 商业开发授权。免费用户无法下载项目离线部署包。
当 VIP 开发者在 ThingJS 平台“在线开发”环境完成一个项目开发,准备进行项目离线部署包下载时,需了解一下项目部署包配置文件:CPS 文件。
一般情况下,ThingJS 平台的离线部署包生成程序会自动打包项目所引用的场景和模型,但因为开发人员程序写法多样,离线部署包生成程序很难一一识别这些实际需要打包的场景、模型,所以“在线开发”环境给每个项目都增加了一个 CPS 配置文件,辅助项目离线部署包打包。
为确保项目中所引用的场景和模型能够被完整离线打包,需在在线开发中自行配置项目对应的 CPS 文件后再进行“ThingJS 项目离线部署包”的申请。
CPS 文件配置方法如下:
例如,在线开发中,需要进行离线部署的项目如下图所示:
项目中引用了一个场景 ('/api/scene/15fc31d71fba01bc0a093xxx'),和一个模型 ('/api/models/ABCF7A3F0BDA48B7B7A8C9C94824359D/0/gltf/')。
点击打开当前项目下对应的 CPS 文件,CPS 文件初始内容如下图所示:
将需要离线的场景 URL 填入 scenes 配置项中,模型 URL 填入 models 配置项中,如下图所示。
保存即配置完成。
场景文件将被打包至离线部署包的/web/scene/目录下,模型文件将被打包至离线部署包的/web/models/目录下。
申请下载
入口
在线开发中,申请“ThingJS 项目离线部署包”需到“离线部署管理”面板中进行,“离线部署管理”面板的入口有两处:
(1)快捷入口,如下图所示位置:
(2)菜单—项目(P) —部署项目—离线部署
申请
“离线部署管理”面板如下图所示:
根据需求选择对应的离线部署包类型(临时部署、永久部署)进行申请。
在弹出的对话框中选择需要部署离线部署包的服务器系统(Windows、Linux)。
确认后,“离线部署管理”面板中将新增一条“离线部署包”记录,“操作”栏会显示部署包生成百分比,请耐心等待“离线部署包”生成。
下载
“离线部署包”生成后,即可进行下载操作,点击“下载”按钮,将“离线部署包”下载至本地。
安装
Windows 服务器
将获取到的 Windows 版本的“ThingJS 项目离线部署包”压缩包解压至需要部署的目录下,解压后如下图所示:
双击运行 start.exe 即可启动离线部署服务,离线部署服务默认的端口号为 9000,如需修改请参考第 4.1 节的内容。服务使用期间,请勿关闭服务控制台窗口。
Linux
将获取到的 Linux 版本的“ThingJS 项目离线部署包”压缩包解压至需要部署的目录下。注意:需使用 7za 解压,命令为:7za x offline.zip -r -o./offline。
解压后文件结构如下图所示:
通过命令 chmod u+x start 为 start 文件增加执行权限。
执行 start 启动服务,离线部署服务默认的端口号为 9000,如需修改请参考第 4.1 节的内容。
为保证进程能够保持在后台运行,可在 screen(多重视窗管理程序)中执行,或使用其他后台执行的方法。
可通过命令 netstat –napl | less 或 ps axu | grep start | less 查看端口情况。
若要关闭离线部署服务,可通过 kill -9 PID 命令结束相应进程。
配置
本章介绍了几种常见的“ThingJS 项目离线部署包”支持的配置方法,请勿自行更改未说明的离线部署包中其他的文件内容,以免发生不可预期的部署问题,导致部署失败。
修改服务启动端口
“ThingJS 项目离线部署服务”默认端口号为 9000,可以通过配置离线部署包中 system\conf 目录下的 application.properties 文件来修改端口号。
用文本编辑器打开 application.properties,修改 server.port 为新端口号。
注意不要和原来的服务端口冲突,若端口冲突会无法启动离线部署服务,如下图所示:
配置 HTTPS 访问(可选)
(注:若服务不需要开启 HTTPS 访问,可跳过该节。)
通过配置 Nginx,开启 HTTPS 服务,并代理到离线部署服务,配置如下图所示:
修改登录密码
为确保离线部署项目的安全,请在首次使用默认密码登录后尽快修改登录密码。
成功登录“项目离线部署管理”界面后,如图所示,点击“修改密码”,
在弹出的对话框中输入需要修改的新密码,即可完成登录密码的修改。
密码将以“密文”的形式保存在离线部署包 system\conf 目录下的 application.properties 文件中,如忘记密码,可自行“删除”配置文件中的密码设置项,即可自动恢复默认密码(admin),如下图所示。
(注:请勿擅自填写密码设置项的内容。)
瓦片地址服务配置
对于离线的地图项目,因为地图瓦片资源数据量较大,这部分内容的离线需要开发人员自己来做。当前支持加载 ZXY 格式的地图服务,如果已有自己的地图服务,可在创建地图的时候设置,方法如下:
打开部署目录下的 web\map.json 文件,找到配置瓦片图层的地方:
倾斜摄影数据配置
ThingJS 3D 可视化平台支持倾斜摄影数据,若需要在项目中使用倾斜摄影,平台提供倾斜摄影 osgb 数据转换处理上图服务,可咨询平台客服。
在项目离线部署时,请将 ThingJS 平台为您转换处理后的倾斜摄影数据复制到部署目录的\web\lib 文件夹下,需保证路径中有正确的 tileset.json 文件以及相对的倾斜摄影文件夹。如下图所示:
然后需要手动修改离线部署包中的主脚本,将 3dtiles 的服务地址更换为离线部署包相对地址“./lib/tileset.json”。如下图所示:
单服务器多项目部署配置
在默认情况下,仅可以下载单服务器单项目部署包,如有单服务器部署多项目的需求,需要购买“单服务器多项目部署授权”。
购买“单服务器多项目部署授权”后,将拥有下载多项目对应的“项目资源包”的功能,该“项目资源包”含有项目资源文件及对应的更新程序。
将得到的“项目资源包”解压至已离线部署的根目录下,如下图所示。
Windows 环境下可以直接执行更新程序update.exe ,Linux环境下执行./update。执行前确保原部署服务已停止,否则无法正确完成更新。
已部署的离线部署包将升级为“单服务器多项目部署包”,重新启动离线部署服务 ,向官方申请对应项目数的“多项目授权码”,授权通过后,即可通过“/project/目录名/”的方式访问对应的项目。
服务请求配置
离线部署服务请求 Response Headers 中 Access-Control-Allow-Origin 默认不允许跨域,可以通过配置离线部署包中 system\conf 目录下的 application.properties文件来修改。如下图所示,修改 server.origin 为允许请求的 origin 白名单。
授权
访问“项目离线部署管理”界面
根据服务启动信息,访问“项目离线部署管理”界面(http://ip:port/admin)。
访问“项目离线部署管理”界面,需要进行登录操作,用户名和密码初始默认都为“admin”(为确保离线部署项目的安全,请在首次登录后尽快修改密码,参考第 4.3 节内容),登录界面如下图所示:
登录成功后即可进入到“项目离线部署管理”界面,如下图所示:
授权“临时部署包”
ThingJS 3D 可视化开发平台当前有效的“VIP 商业开发者”,可在“ThingJS 在线开发平台”(https://www.thingjs.com/guide/?m=sample) 获取7天临时授权码文件对“临时部署包”进行授权。请按以下章节描述的步骤逐步进行操作。
下载机器码文件
首先在机器码文件列表中,下载当前有效的机器码文件:
将该机器码文件下载至本地:
申请临时授权码文件
访问“ThingJS 在线开发平台”,打开部署项目(如本例所示,部署项目为“0dh22110151”)的“离线部署管理”面板,找到机器码文件对应的离线部署包的记录,点击 “上传机器码文件”按钮。
如本例所示,机器码文件为“xxx_0dh22110151_211019134038_211019152410_B.mach”,需找到对应的离线部署包“xxx_0dh22110151_211019134038”进行授权申请:
在弹出的对话框中上传对应的机器码文件(3.2.0 版本以下的离线部署包用户,可通过粘贴机器码的方式获取)。
成功上传正确的机器码文件后,即可申请获取对应的授权码文件(本例中对应的授权码文件为“xxx_0dh22110151_211019134038_xxxxxxxx_B.lic”),下载授权码文件到本地。如图所示:
完成授权
返回到“项目离线部署管理”界面,在当前有效的机器码文件一栏中选择“授权”按钮,上传所获取的对应的授权码文件。
如本例所示,为机器码文件“xxx_0dh22110151_211019134038_211019152410_B.mach”,上传对应的授权码文件“xxx_0dh22110151_211019134038_xxxxxxxx_B.lic”,即可完成授权。
授权成功后,可通过点击“预览”按钮直接进行项目预览,或通过访问根目录链接进行项目预览。
需要注意的是,“临时部署包”通过“临时授权码”授权成功后,有效期为 7 天。如需永久授权,请更新升级为“永久部署包”(参考第 6 章),或直接使用“永久部署包”进行授权。
授权“永久部署包”
“永久部署包”必须使用“永久授权码”进行授权激活。
同 5.2.1 所述,需先获得离线部署包当前有效的“机器码文件”,然后将该“机器码文件”发送给 ThingJS 平台商务人员,获取离线部署包对应的“永久授权码文件”,最后返回到“项目离线部署管理”界面,同 5.2.3 所述完成“永久部署包”的授权。
更新
为方便开发人员对已部署的“ThingJS 项目离线部署包”进行项目内容的更新,“ThingJS 项目离线部署包”提供“更新项目”的功能。
获取“更新部署包”
首先,同第 2 章所述,获取一个当前已部署项目对应的需要进行更新的“离线部署包”(只可更新当前已部署项目的离线部署包)作为“更新部署包”,需要注意的是,只有“永久部署包”才可以作为“更新部署包”进行项目更新。
更新项目
在“项目离线部署管理”界面中,切换页签到“更新项目”,点击“上传更新包”按钮,上传获取到的“更新部署包”。
如果您当前已部署的“离线部署包”为“临时部署包”,“更新项目”成功后,当前“临时部署包”自动更新升级为“永久部署包”,当前的临时授权将失效,升级为“永久部署包”后,需对该“永久部署包”进行“永久授权”(参考第 5.3 节内容)。
如果您当前已部署的“离线部署包”为“永久部署包”,“更新项目”将仅更新项目内容,并不会影响已有授权。
更新成功,并正确授权后,即可预览更新项目内容后的离线部署项目。
迁移
变更部署服务器,或改变部署服务器的硬件信息(如硬盘、CPU、网卡等)需重新授权,如确需对已永久部署的“ThingJS 项目离线部署包”进行环境变更,请按本章节内容迁移“ThingJS 项目离线部署包”。
获取新机器码文件
首先,获取到需要在新服务器环境中部署的离线部署包(永久部署包),该部署包可以是已永久部署的离线部署包的副本,也可以按第 2 章所述获取当前已部署项目的新的离线部署包(永久部署包)。
将获取到的离线部署包正确部署到新的服务器环境中,启动后访问部署在新服务器环境中的离线部署包的“项目离线部署管理”界面,下载当前有效的新的“机器码文件”至本地。
获取迁移码文件
返回到已永久部署的离线部署包的“项目离线部署管理”界面,点击“迁移”按钮,获取“迁移码文件”。
(注:执行迁移操作后,当前机器授权将失效,且无法再次授权激活。)
将生成的“迁移码文件”下载至本地。
获取新授权码文件
访问“ThingJS 在线开发平台”,打开已部署项目,点击“项目—更新项目”。
选择“离线部署迁移(在线开发)”。
在弹出的“离线部署迁移”面板中,从上到下依次上传 7.2 节获取的“迁移码文件”,和 7.1 节获取的“新机器码文件”。
成功上传该项目对应的正确的“迁移码文件”和“新机器码文件”后,即可申请“新机器码文件”对应的新的“授权码文件”,如下图所示:
完成新服务器的授权
访问部署在新服务器环境中的离线部署包的“项目离线部署管理”界面,在当前有效的机器码文件一栏中选择“授权”按钮,上传 7.3 节中获取的新的对应的授权码文件,即可完成新服务器的授权。
常见问题(FAQ)
Q1. 在线开发正常运行项目,离线部署后访问 127.0.0.1:9000,3D场景展示出错
答:用于部署的网络服务器一般不强调显示,故显卡较差,甚至无独立显卡。而 3D 场景显示对显卡要求较高,直接在服务器上 127.0.0.1 访问,服务器显卡不足以支持 3D 场景渲染展示,往往场景会显示出错。故可用有独立显卡的客户机浏览器访问该服务器场景,来验证 3D 场景显示是否正常。
Q2. Windows 环境下,start.exe 启动失败
答:常见的 start.exe 启动失败、发生闪退的情况是,当前 Windows 环境中离线部署服务的端口号已被其他服务占用,请检查端口占用情况,或为离线部署服务配置其他可使用的端口号。
Q3. Windows 环境下,start.exe 卡住,服务无反应
答:这种情况一般是鼠标不小心点击了服务程序窗口,导致服务程序暂停,需手动于服务程序窗口中敲击回车来解决。
Q4. 地图瓦片和离线前不一致
答:原因主要是地图瓦片资源未离线打包,打包时默认带了谷歌影像前 5 级的瓦片,所以我们需要参考第4.3节替换地图瓦片服务。关于支持的地图瓦片服务(ZXY 标准瓦片)格式说明如下:将地图全幅显示时的图片从左上角开始,往下和往右进行切割,切割的大小默认为 256*256 像素,左上角的格网行号为 0,列号为 0,往下和往右依次递增。如下图所示:
目前主流互联网地图基本都使用该格式地图瓦片,ArcGIS Server、SuperMap iServer 发布的地图瓦片服务也是 ZXY 标准瓦片。
Q5. 场景、模型未离线打包
答:一般情况,离线程序会自动打包项目所引用场景和模型,因为开发人员程序写法多样,离线程序很难一一识别,所以加了 cps 配置文件,辅助打包。如遇项目引用场景或模型未离线打包的情况,需在在线开发中自行配置项目对应的 cps 文件并重新打包。
cps 文件配置方法如下:
例如,在线开发中,需要进行离线部署的项目如下图所示:
项目中引用了一个场景 ('/api/scene/18ddd5cc8424cfcd7f7d7955),和一个模型 ('/api/models/8CF6171F7EE046968B16E10181E8D941/0/gltf/')。点击打开当前项目下该项目对应的 cps 文件,初始 cps 文件内容如下图所示:
将 cps 文件下面的配置示例注释打开。
将需要离线的场景 URL 填入 scenes 配置项中,模型 URL 填入 models 配置项中。
保存后重新下载离线部署包。
场景文件将打包至离线部署包的/web/scene/目录下,模型文件将打包至离线部署包的/web/models/目录下。
Q6. 360 解压离线部署包有问题
答:360 压缩软件解压离线部署包会出现如下情况:
请使用 7-Zip 或其他支持 7z 格式的压缩软件进行解压。
Q7. 倾斜摄影数据访问不到,控制台报错 404
答:两种解决方案。
方案一:将 web/lib/tileset.json 该文件中的特殊字符‘+’进行转义处理,使用编辑器打开该文件之后,全局替换‘+’字符变成‘%2B’字符。修改之后,保存即可。重新刷新项目之后既可访问。
方案二:单独启动一个服务,来访问倾斜摄影的数据,推荐使用 node.js 启动服务。首先在命令行中安装 http-server 服务,可以输入 npm install http-server –g 进行安装。安装完成之后进入 web\lib 目录下,输入命令 http-server --cors -p 8088,来启动服务。启动之后修改脚本中倾斜摄影地址为 http://{本机 ip}:8088/tileset.json 即可。
Q8. ChartBuilder 项目离线部署后看不到图表内容
答:需要在访问端口后拼/chart 来查看 ChartBuilder 项目,例如:http://127.0.0.1:9000/chart(服务地址:服务端口/chart)
Q9. ChartBuilder 项目离线部署后显示 127.0.0.1 拒绝了连接请求
答:ChartBuilder 项目离线部署后,默认为 3D 内容配置的是本地 9000 端口,如使用 ip+自定义端口的方式访问,需要自行修改 scene.def 文件中的 iframeURL 为使用的 ip+端口。如下图所示:
Q10. ThingJS项目离线部署包V3.2.0版本与旧版本相比,有什么区别
答:ThingJS项目离线部署包V3.2.0版本与旧版本相比.区别如下:
(1)增加了“项目离线部署管理”界面;
(2)强调了“临时部署包”和“永久部署包”两个概念,具体请查看本文档的第1.3节内容;
(3)原“机器码”、“授权码”全部升级为“文件”的形式;
(4)新增“登录”功能;
(5)新增“更新项目”功能;
(6)完善“日志系统”,如遇到部署问题请下载日志文件发送给平台客服人员;
(7)完善“错误码信息”,如遇到授权失败问题,请先查看本文档第9章的“错误码对照表”。
Q11. 更新项目后,控制台接口“/get/PublicKey”报404
答:是后台程序未更新,导致接口“/get/PublicKey”没有请求到,请手动将离线部署包中的start程序替换为最新版本并重启。
Q12. 9.12服务配置在二级路由下,控制台报错404
答:两种解决方案。
方案一:Nginx配置如下两个路径。注:bigMap为需要的二级路由名
方案二:手动将项目中引用到的绝对路径改为相对路径。
错误码对照表
参数 | 说明 | 解决方法 |
---|---|---|
10001 | 服务异常 | 查看日志文件或寻找平台客服人员协助 |
50101 | 授权码已过期 | 申请新的授权码文件 |
50103 | 当前服务器授权已迁移 | 授权已迁移,当前服务不可重复激活 |
50104 | 当前目录未授权 | 将当前服务更改至授权目录 |
50105 | 离线项目数量超出授权 | 删除超出的项目或申请对应项目数量的授权码文件 |
50106 | 授权码解析错误 | 检查授权码文件内容 |
50107 | 机器匹配失败,当前部署机器未授权 | 检查部署机器信息 |
50108 | 未找到匹配授权码文件 | 申请授权码文件 |
50109 | 授权目录读取失败 | 检查部署包内容变动 |
50110 | 授权项目信息读取失败 | 检查部署包内容变动 |
50111 | 授权码文件格式错误 | 检查授权码文件格式 |
50112 | 授权码文件名与机器码文件不匹配 | 检查授权码文件命名 |
50113 | 授权码文件过大 | 检查文件内容 |
50114 | 授权码文件命名格式错误 | 检查授权码文件命名,请勿自行更改文件命名 |
50115 | 授权码文件已失效 | 申请新的授权码文件 |
50116 | 授权码类型不匹配(永久部署包) | 为永久部署包申请永久授权码文件 |
50117 | 授权码类型不匹配(临时部署包) | 为临时部署包申请临时授权码文件 |