一个医学 3D 模型展示与分享系统。项目以 PHP + MySQL + Three.js 为核心,支持 病例管理、STL 上传、服务端异步预处理为 GLB、前台安全查看、Docker 一键部署。
link: https://3d.czsyyy.cn/v?token=cddaa9000ca8fb4ed363a4c8457ced10
password: 1234

none / password / patient_name 三种访问验证模式PHP / PDO MySQLMySQL 8Three.js、GLTFLoaderNode.js、threeNginxsupervisordDocker Compose. ├─ app/ PHP 业务代码 ├─ bootstrap/ 启动、辅助函数、自动加载 ├─ config/ 配置文件 ├─ database/migrations/ 初始化迁移 SQL ├─ docker/php/ PHP + Nginx + Worker 容器定义 ├─ install/ 首次安装引导 ├─ public/assets/ 前端静态资源 ├─ scripts/ Worker 与 STL→GLB 处理脚本 └─ storage/uploads/ 原始 STL 与展示 GLB 资产
docker compose up -d --build
容器启动后,访问安装页完成初始化:
http://<host>:8098/install/安装流程由 install/install.php 负责,自动执行:
database/migrations.envstorage/installed.lock当前默认设计:
80988099Nginx 双入口定义位于 docker/php/nginx.conf 与 docker/php/nginx.conf
推荐部署策略:
项目支持配置多套分享通道,并由管理员在后台手动选择生成:
相关配置文件:config/share_channels.php
默认可通过环境变量控制:
APP_FRONT_URLAPP_SHARE_PUBLIC_URLAPP_SHARE_DEFAULT_CHANNEL后台生成链接与二维码时,不再完全依赖当前访问 Host,而是由管理员显式选择分享通道。
pendingscripts/process-model-queue.php 扫描待处理模型scripts/stl-to-glb.mjs 执行 STL → GLB 转换pendingprocessingreadyfailed前台在 GLB 尚未全部就绪前会显示等待提示,不会回退加载原始 STL。
首次部署时会自动执行 database/migrations 下的 SQL 文件。
若你是在已有数据库上升级到当前版本,请根据 database/migrations/ 中的 SQL 文件与现网数据库状态自行整理升级脚本。
参考模板:.env.example
常用项包括:
APP_NAMEAPP_FRONT_URLAPP_ADMIN_URLAPP_SHARE_PUBLIC_URLDB_HOSTDB_PORTDB_NAMEDB_USERDB_PASS后台入口位于 docker/php/nginx.conf,推荐只允许内网访问。
如果病例使用“无需验证”模式,分享链接泄露后风险更高。生产环境更推荐默认使用 password 验证模式。
模型下载接口由 ViewerController.modelFile() 控制。若接入 CDN,请避免对私有模型下载接口做公共缓存。
安装完成后建议通过网关或 Nginx 规则限制 /install/ 暴露。
本项目采用 Apache 2.0 许可证。