部署结构

推荐单机部署:Nginx 对外提供 HTTPS,转发到本机 `3d-ppt-backend`。后端连接 MySQL,并保存上传资源。

用户浏览器HTTPSNginx转发Go 后端连接MySQL / uploads

1. 准备环境

OS

Linux

Ubuntu / Debian / CentOS
Go

Go

1.22+
JS

Node.js

20 LTS+
DB

MySQL

8.0 推荐
apt update
apt install -y nginx mysql-server git unzip build-essential

node -v
npm -v
go version

2. 放置项目文件

建议把源码放在固定目录,部署和排障都更清晰。

/opt/sceneview-ppt
├── 3d-ppt-editor
└── 3d-ppt-backend

3. 初始化 MySQL

mysql -uroot -p
CREATE DATABASE `3d_ppt_backend` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER '3d_ppt_user'@'127.0.0.1' IDENTIFIED BY 'change_this_password';
GRANT ALL PRIVILEGES ON `3d_ppt_backend`.* TO '3d_ppt_user'@'127.0.0.1';
FLUSH PRIVILEGES;
cd /opt/sceneview-ppt/3d-ppt-backend
mysql -u3d_ppt_user -p 3d_ppt_backend < init.sql

4. 配置后端

核心配置是端口、MySQL 连接串、静态目录和上传目录。

{
  "port": "3200",
  "mysqlDsn": "3d_ppt_user:change_this_password@tcp(127.0.0.1:3306)/3d_ppt_backend?charset=utf8mb4&collation=utf8mb4_unicode_ci&parseTime=true&loc=Local",
  "uploadDir": "uploads",
  "publicDir": "public"
}
配置文件通常是 `3d-ppt-backend/config.json`。如果你的版本支持环境变量,也可以用 `PPT_BACKEND_PORT` 和 `PPT_MYSQL_DSN` 覆盖。

5. 构建前端和后端

构建前端

cd /opt/sceneview-ppt/3d-ppt-editor
npm install
npm run build
前端构建产物应进入 `3d-ppt-backend/public`,生产环境由后端统一承载。

编译后端

cd /opt/sceneview-ppt/3d-ppt-backend
go mod download
go build -o 3d-ppt-backend
mkdir -p uploads

6. 启动服务

先前台验证

cd /opt/sceneview-ppt/3d-ppt-backend
./3d-ppt-backend

curl -I http://127.0.0.1:3200/

再交给 systemd

vim /etc/systemd/system/sceneview-ppt.service
[Unit]
Description=SceneView 3D PPT Backend
After=network.target mysql.service

[Service]
Type=simple
WorkingDirectory=/opt/sceneview-ppt/3d-ppt-backend
ExecStart=/opt/sceneview-ppt/3d-ppt-backend/3d-ppt-backend
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable sceneview-ppt
systemctl start sceneview-ppt
systemctl status sceneview-ppt

7. 配置 Nginx

公网建议只开放 80 / 443,Nginx 转发到后端 3200 端口。

server {
    listen 80;
    server_name ppt.example.com;

    client_max_body_size 200m;

    location / {
        proxy_pass http://127.0.0.1:3200;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
nginx -t
systemctl reload nginx

上线检查

查看 3D PPT 产品能力

部署完成后,3D PPT 可以用于在线编辑、三维内容演示、资源上传和私有化交付。