4. 发布项目
目的
本文档是一个技术指导性文件,用于说明“ ThingJS 项目离线部署包”安装使用的相关问题。
说明
ThingJS 项目离线部署包可由已开通 ThingJS 3D 可视化开发平台(https://www.thingjs.com) VIP商业开发者的账号进行下载。
ThingJS 项目离线部署包的正式部署授权购买者也可获得项目离线部署包。但建议项目离线部署包的正式授权者开通 VIP 商业开发者账号,以便后续更方便地自行修改、更新自己离线部署的项目。
硬件配置
ThingJS 项目离线部署包的安装服务器推荐配置:
- CPU: 2G主频4核
- 内存: 8G
- 硬盘: 80G,推荐SSD
- 带宽: 推荐8M
- 操作系统: Linux x64, Windows x64
ThingJS浏览器客户端推荐配置:
- CPU: Intel i7或同档CPU以上
- 内存: 16G
- 硬盘: 80G,推荐SSD
- 显卡: 独显GTX1070以上,2G显存以上
Linux
首先需将项目离线部署的 zip 包解压。注:需使用 7za 解压,命令为 7za x offline.zip -r -o./offline
解压后文件结构如下图所示:
通过命令 chmod u+x start 为 start 文件增加执行权限
执行 start 启动服务:
为保证进程能够保持在后台运行,可在 screen(多重视窗管理程序)中执行,或使用其他后台执行的方法。
可通过命令 netstat –napl | less或ps axu | grep start | less 查看端口情况
使用结束后,可通过 kill -9 PID 命令结束进程
Windows
首先解压 zip 包,拷贝到运行目录,例如 C 盘。打开如下图:
双击 start.exe, 如果系统中不显示后缀双击系统图标的文件也可。
服务器默认端口号为 9000。可以修改 system\conf 目录下的 application.properties 来修改端口号。
用文本编辑器打开 application.properties。
注意不要和原来的服务端口冲突,如果端口冲突会无法启动 start.exe。
(若不需要开启 HTTPS ,可跳过该节)
通过配置 nginx,开启 HTTPS 服务,并代理到离线部署服务,配置如下图(注意:location / 后不可加子目录)
首次访问服务时会弹出激活页面。
访问方法: http://127.0.0.1:9000 (ip:端口号)
橙色部分为机器码。
下载离线包后,会出现授权按键。
点击授权按键。
点击授权,填入刚才的机器码即可得到授权码。
将复制到的授权码填入激活页面的授权许可证框,然后点激活。
完成激活后,项目可正常访问。
VIP 商业开发者具有试用离线部署包的权限。
更新及授权迁移功能仅对购买了 ThingJS 项目离线部署包正式授权的用户开放。请在授权有效的情况下进行迁移,在如 IP 更换导致授权失效的情况下,将无法正常进行迁移。
正式用户已激活的授权可以更新及迁移授权。已部署服务器启动服务之后,访问地址http://127.0.0.1:9000/auth.html看到授权页面。选择迁移授权页签。
点击申请授权按钮。
申请“更新授权”将使当前本机原授权码失效 !所以在操作前请确认您确实要这样做!
点击确定之后会生成相对应的更新授权码。
复制该更新授权码以及要迁移服务器的机器码(机器码获取方法请看章节五),到 www.thingjs.com的在线开发页面,选择已部署的项目进行项目的离线部署更新。
选择离线部署更新。点击下一步。
将更新授权码、新服务器的机器码放入指定位置,得到迁移的授权码,复制该授权码即可激活新部署的服务器。
点击确定得到迁移授权码。去新服务器进行授权即可。
和在线使用一样,离线部署包也有三种方式使用:
- PC 访问,直接访问服务器地址 ip:端口。
- 手机访问,使用草料二维码生成器( https://cli.im/ )生成二维码。内容:[ip:端口]
- Iframe 引用:在自有项目用引用设计一个 iframe 标签,然后 src 写入 ip:端口
离线修改脚本文件,不用重新打包和重新激活。
项目的脚本文件为 web 目录下对应项目名称的 js 文件,例如 web\index.js。
修改完脚本文件后重新访问服务器立即生效。
脚本文件可以用任意文本编辑器编辑。
修改脚本文件无需重新打包和重新激活。
通过https://www.thingjs.com官网下载的 CampusBuilder 修改 3D 场景后,同步或导出 tjs 包上传至 ThingJS 官网,重新打包下载并授权激活。通过在线 CityBuilder 编辑的 3D 城市场景也可在修改后,通过重新打包下载并授权激活。
自定义模型可通过 CampusBuilder 上传,并同场景一同导出。
对于离线的地图项目,因为地图瓦片资源数据量比较大,因此这部分内容的离线需要用户自己来做。当前支持加载ZXY格式的地图服务,如果用户有自己的地图服务,可在创建地图的时候设置,方法如下:
编辑 web\map.json 文件,找到配置瓦片图层的地方:
将红框中的地址替换为要使用的地图服务地址。
如果用户有瓦片地图的散图(例如使用工具下载的地图瓦片),可以直接将散图目录整体拷贝到web\tile\satellite下,替换旧的目录。
ThingJS 平台支持倾斜摄影数据。若需要在项目使用倾斜摄影,ThingJS 提供倾斜摄影 osgb 数据转换处理上图服务。服务商务问题可咨询平台客服。
在项目离线部署时,请将 ThingJS 平台为您转换处理后的倾斜摄影数据复制到根目录 lib 文件夹下,需保证路径中有正确的 tileset.json 以及相对的倾斜摄影文件夹。参考下面截图:
然后您需要修改您项目中的脚本,将 3dtiles 的服务地址更换成为‘./lib/tileset.json’。参考下面截图:
在默认情况下,仅可以下载单服务器单项目部署包,如有单服务器部署多项目的需求,需要购买“单服务器多项目部署授权”。
购买“单服务器多项目部署授权”后,您将拥有下载多项目对应的“项目资源包”的功能,该“项目资源包”含有项目资源文件及对应的更新程序。
将得到的“项目资源包”解压至已离线部署的根目录下,如下图所示。
执行更新程序 update.exe(linux环境下执行./update,执行前确保原部署服务已停止,否则无法正确完成更新)。
已离线部署的包将升级为“单服务器多项目部署包”,重新启动离线部署服务 ,向官方申请对应项目数的“多项目授权码”,授权通过后,即可通过“/project/目录名/”的方式访问对应的项目。
Q1. 在线开发正常运行项目,离线部署后访问 127.0.0.1:9000,3D场景展示出错
用于部署的网络服务器一般不强调显示,故显卡较差,甚至无独立显卡。而3D场景显示对显卡要求较高,直接在服务器上127.0.0.1访问,服务器显卡不足以支持3D场景渲染展示,往往场景会显示出错。故可用有独立显卡的客户机浏览器访问该服务器场景,来验证3D场景显示是否正常。
Q2. 地图瓦片和离线前不一致
原因主要是地图瓦片资源未离线打包,打包时默认带了谷歌影像前5级的瓦片,所以我们需要参考步骤十替换地图瓦片服务。关于支持的地图瓦片服务(ZXY标准瓦片)格式说明如下:将地图全幅显示时的图片从左上角开始,往下和往右进行切割,切割的大小默认为 256*256 像素,左上角的格网行号为 0,列号为 0,往下和往右依次递增。如下图所示:
目前主流互联网地图基本都使用该格式地图瓦片,ArcGIS Server、SuperMap iServer 发布的地图瓦片服务也是 ZXY 标准瓦片。
Q3. 场景、模型未离线打包
一般情况,离线程序会自动打包项目所引用场景和模型,因为开发人员程序写法多样,离线程序很难一一识别,所以加了 cps 配置文件,辅助打包。如遇项目引用场景或模型未离线打包的情况,需在在线开发中自行配置项目对应的 cps 文件并重新打包。
cps 文件配置方法如下:
例如,在线开发中,需要进行离线部署的项目如下图所示:
项目中引用了一个场景 ('/api/scene/18ddd5cc8424cfcd7f7d7955),和一个模型 ('/api/models/8CF6171F7EE046968B16E10181E8D941/0/gltf/')。
点击打开当前项目下该项目对应的 cps 文件,初始 cps 文件内容如下图所示:
将 cps 文件下面的配置示例注释打开。
将需要离线的场景 URL 填入 scenes 配置项中,模型 URL 填入 models 配置项中。
保存后重新申请离线部署。
场景文件将打包至离线部署包的 /web/scene/ 目录下,模型文件将打包至离线部署包的 /web/models/ 目录下。
Q4. 360解压离线部署包有问题
360压缩软件解压离线部署包会出现如下情况:
请使用 7-Zip 或其他支持 7z 格式的压缩软件进行解压。
Q5. 倾斜摄影数据访问不到,控制台报错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 即可。
Q6. ChartBuilder项目离线部署后看不到图表内容
需要在访问端口后拼 /chart 来查看 ChartBuilder 项目,例如:http://127.0.0.1:9000/chart
Q7. ChartBuilder 项目离线部署后显示 127.0.0.1 拒绝了连接请求
ChartBuilder 项目离线部署后,默认为 3D 内容配置的是本地 9000 端口,如使用 ip+ 自定义端口的方式访问,需要修改 scene.def 文件中的 iframeURL 为使用的 ip+ 端口。如下图所示: