Skip to content

服务端部署指南

deploy

资源介绍

STP在线查看器服务端的所有必需文件资源打包在一个名为 tiny_3dconvert.zip 的压缩包中。解压后,您将获得以下文件列表:

序号文件名称类型备注
1tiny-3dconvert-server1.1.tar文件Tiny_3DConvert Server Docker镜像压缩包
2tiny-fileimport-latest.tar文件Tiny_FileImport 最新 Docker镜像压缩包
3docker-compose.yml文件Docker Compose 配置示例文件
4init.sql文件数据库初始化脚本
5tinydata文件夹数据配置文件夹,存放各服务所需数据文件的路径配置
6nsdtlock文件Linux命令行工具,用于验证LICENSE并解锁服务
7tiny-viewer.js文件3D模型预览JavaScript版SDK

平台概述

STP在线查看器是一个轻量级的3D服务平台,采用 Docker 容器化技术进行部署。整个运行环境由以下4个子服务组成:

  • postgres: 数据库服务,用于存储3D数据及相关业务数据。
  • minIo: 高性能对象存储服务,用于存储3D源文件及其关联数据。
  • tiny-3dconvert-server: 服务端API接口提供者。
  • tiny-fileimport: 文件导入服务。

服务镜像构建

在开始部署前,请确保已安装并配置好 Docker 和 Docker Compose 环境。首先创建一个新的文件夹并将解压后的资源 1-6 复制到该文件夹中。对于未提供的 postgresminIo 镜像,可直接从官方拉取;而 tiny-3dconvert-servertiny-fileimport 可通过导入镜像文件构建,操作步骤如下:

  1. 拉取官方镜像:

    shell
    # 拉取postgres镜像
    docker pull postgres:13.1-alpine
    
    # 拉取minIo镜像
    docker pull minio/minio
  2. 导入自定义镜像:

    shell
    # 导入tiny-3dconvert-server镜像
    docker load -i tiny-3dconvert-server1.1.tar
    
    # 导入tiny-fileimport镜像
    docker load -i tiny-fileimport-latest.tar

​ 确认镜像构建成功,请运行 docker images 命令,若显示包含以下四个镜像,则表明镜像构建成功。

images

获取license

在部署tiny-3dconvert服务之前,您需要获取有效的license。在资源文件中有一个nsdtlock的命令行工具,该工具负责验证授权和解锁等工作。具体做法是需要将该工具运行起来,运行3个命令,如下:

shell
chmod +x nsdtlock
nohup ./nsdtlock > nsdtlock.log 2>&1 &
iptables -I INPUT -p tcp --dport 5555 -j ACCEPT

运行完成之后,该命令行会产生一个machine mac的码,使用如下命令查看码:

shell
tail -f 200 nsdtlock.log

machine mac码复制,发给tiny-server的客服人员,他会给你一个LICENSE,然后将LICENSE配置到docker-compose.yaml/tiny-3dconvert-server/environment/LICENSE_CODE,并且在MAC_IP配置项中配置docker容器宿主机的ip地址。

另外nsdtlock这个命令行工具产生的进程不要杀掉,请保持运行直到服务已经完成启动、并且通过了授权验证,或者干脆让此进程一直运行。

下一步是基于这些镜像构建容器和服务。

部署配置详解

docker-compose.yaml 文件中提供了四个容器的配置示例,大部分配置无需更改,但请注意标记需要修改的部分。具体配置示例如下:

yaml
version: "3.5"
services:
  tiny-postgres:
    image: "postgres:13.1-alpine"
    restart: always
    environment:
      POSTGRES_DB: tiny_3dconvert
      POSTGRES_USER: tiny3dconvert
      POSTGRES_PASSWORD: tiny3dconvert
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone
      - ./tinydata/postgres-data:/var/lib/postgresql/data/
    ports:
      - "7432:5432"
  
  tiny-minio:
    image: "minio/minio"
    command: server /data --console-address ":9002"
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone
      - ./tinydata/minio-data:/data
    ports:
      - "9900:9000"
      - "9002:9002"
  
  tiny-fileimport-service:
    image: registry.cn-hangzhou.aliyuncs.com/nsdt/tiny-fileimport 
    container_name: tiny-fileimport-service
    restart: always
    privileged: true
    ulimits:
      core: 0
    volumes:
      - ./tinydata/tiny-fileimport-service/.env:/fileimport-service/.env
      - /etc/localtime:/etc/localtime:ro
    environment:
      TZ: "Asia/Shanghai"
      DEBUG: "fileimport-service:*"
      # 根据实际情况进行配置
      PG_CONNECTION_STRING: "postgres://tiny3dconvert:tiny3dconvert@ip:7432/tiny_3dconvert"
      WAIT_HOSTS: postgres:7432
	  # 根据实际情况进行配置
      S3_ENDPOINT: "http://ip:9900"
      S3_ACCESS_KEY: "minioadmin"
      S3_SECRET_KEY: "minioadmin"
      S3_BUCKET: "speckle-server"
      #根据实际情况进行配置
      LICENSE_CODE: "xxxLICENSE_CODE"
      # 根据实际情况进行配置
      TINY_SERVER_URL: "http://ip:5500"

  tiny-3dconvert-server:
    container_name: tiny-3dconvert-server
    image: nsdt/tiny-3dconvert-server:1.1
    ports:
      - "5500:3000"
    environment:
      TZ: "Asia/Shanghai"
      NODE_ENV: "production"
      PORT: 3000
      BIND_ADDRESS: "0.0.0.0"
      CANONICAL_URL: "http://127.0.0.1:3000"
      # 根据实际情况进行配置
      S3_ENDPOINT: "http://ip:9900"
      S3_ACCESS_KEY: "minioadmin"
      S3_SECRET_KEY: "minioadmin"
      S3_BUCKET: "speckle-server"
      S3_CREATE_BUCKET: true
      FILE_SIZE_LIMIT_MB: 500
	  
	  # 根据实际情况进行配置
      POSTGRES_URL: "postgres://tiny3dconvert:tiny3dconvert@ip:7432/tiny_3dconvert"
      POSTGRES_MAX_CONNECTIONS_SERVER: 10
      # 根据实际情况进行配置
      LICENSE_CODE: ""
      MAC_IP: "172.16.0.245"

      WAIT_HOSTS: tiny-postgres:7432, minio:9900

    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./tinydata/tinylogs:/app/logs

在配置过程中,请根据实际环境需求,正确设置与 postgresminIotiny-fileimport-servicetiny-3dconvert-server 相关的环境变量和连接信息。

数据库容器构建与初始化

  1. 构建数据库容器

    不修改配置的情况下,可以使用以下命令构建 PostgreSQL 容器:

    shell
    docker-compose up -d tiny-postgres
  2. 初始化数据库表

    连接至数据库(初始数据库名tiny_3dconvert用户名tiny3dconvert密码tiny3dconvert),执行 init.sql 初始化脚本以完成数据库表结构初始化。如下:init

minIo 容器构建

构建 minIo 容器同样简便,只需运行以下命令:

shell
docker-compose up -d tiny-minio

tiny-fileimport 与 tiny-3dconvert-server 容器构建

tiny-fileimport-servicetiny-3dconvert-server 服务分别依赖于数据库、minIo 服务,并需要配置正确的环境变量。请确保在 docker-compose.yaml 中相应服务下的配置项,如 PG_CONNECTION_STRINGPOSTGRES_URLS3_ENDPOINTTINY_SERVER_URL 等均设置准确无误。

构建两个服务的命令分别为:

shell
docker-compose up -d tiny-fileimport-service
docker-compose up -d tiny-3dconvert-server

使用docker logs tiny-3dconvert-server -f 命令查看服务日志,看到如下界面说明LICENSE验证成功、整个服务构成功。。

success