gongxiangp2/DEPLOYMENT.md
2025-10-26 09:11:04 +08:00

3.9 KiB
Raw Blame History

部署指南

项目部署到 TrueNAS 服务器

服务器信息

  • 服务器地址: 192.168.58.20
  • 用户名: root
  • 部署路径: /mnt/tank/apps/youyidian-3d
  • 访问地址: http://192.168.58.20:4320

自动部署(推荐)

使用提供的部署脚本:

cd /Users/lanmu/Desktop/gongxiangp2
./deploy.sh

脚本会自动:

  1. 打包项目文件
  2. 上传到 NAS 服务器
  3. 构建 Docker 镜像
  4. 启动容器
  5. 运行数据库迁移

手动部署

1. 打包项目

cd /Users/lanmu/Desktop/gongxiangp2
tar -czf project.tar.gz \
  --exclude='node_modules' \
  --exclude='.next' \
  --exclude='.git' \
  --exclude='uploads' \
  .

2. 上传到服务器

scp project.tar.gz root@192.168.58.20:/tmp/

3. SSH 登录服务器

ssh root@192.168.58.20
# 密码: jsjj8888

4. 部署应用

# 创建项目目录
mkdir -p /mnt/tank/apps/youyidian-3d
cd /mnt/tank/apps/youyidian-3d

# 解压项目
tar -xzf /tmp/project.tar.gz

# 启动服务
docker-compose up -d --build

# 查看日志
docker-compose logs -f

5. 运行数据库迁移

docker-compose exec app npx prisma db push

Docker 命令

# 查看容器状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 重启服务
docker-compose restart

# 停止服务
docker-compose down

# 重新构建并启动
docker-compose up -d --build

环境变量

在服务器上修改 docker-compose.yml 中的环境变量(如需要):

  • DATABASE_URL: PostgreSQL 数据库连接
  • S3_*: MinIO S3 存储配置
  • NEXTAUTH_URL: 应用访问地址
  • NEXTAUTH_SECRET: 认证密钥(建议生成新的)

生成新的 NEXTAUTH_SECRET:

openssl rand -base64 32

初始化数据库

第一次部署后,需要在数据库中插入初始场景数据:

docker-compose exec app npx prisma db execute --stdin <<< "
INSERT INTO scenes (id, name, \"createdAt\") VALUES 
(gen_random_uuid(), '客厅', NOW()),
(gen_random_uuid(), '卧室', NOW()),
(gen_random_uuid(), '厨房', NOW()),
(gen_random_uuid(), '餐厅', NOW()),
(gen_random_uuid(), '书房', NOW()),
(gen_random_uuid(), '儿童房', NOW()),
(gen_random_uuid(), '主卧', NOW()),
(gen_random_uuid(), '次卧', NOW()),
(gen_random_uuid(), '阳台', NOW()),
(gen_random_uuid(), '卫生间', NOW()),
(gen_random_uuid(), '玄关', NOW()),
(gen_random_uuid(), '衣帽间', NOW()),
(gen_random_uuid(), '办公室', NOW()),
(gen_random_uuid(), '会议室', NOW()),
(gen_random_uuid(), '展厅', NOW())
ON CONFLICT (name) DO NOTHING;
"

创建管理员账户

  1. 注册一个账户
  2. SSH 登录服务器,设置为管理员:
docker-compose exec app npx prisma studio
# 或者使用 SQL:
docker-compose exec app npx prisma db execute --stdin <<< "
UPDATE users SET role='ADMIN', \"isActive\"=true WHERE email='your-email@example.com';
"

故障排查

查看容器日志

docker-compose logs -f app

进入容器

docker-compose exec app sh

检查数据库连接

docker-compose exec app npx prisma db execute --stdin <<< "SELECT 1"

重新生成 Prisma Client

docker-compose exec app npx prisma generate

备份和恢复

备份上传文件

cd /mnt/tank/apps/youyidian-3d
tar -czf uploads-backup-$(date +%Y%m%d).tar.gz uploads/

备份数据库

数据库在云端,由云服务提供商负责备份。

更新应用

  1. 本地修改代码
  2. 运行部署脚本: ./deploy.sh
  3. 或手动上传并重新构建

监控和维护

  • 定期检查磁盘空间(上传文件会占用空间)
  • 定期查看日志文件
  • 监控容器状态
  • 定期更新 Docker 镜像基础版本

安全建议

  1. 修改 NEXTAUTH_SECRET 为随机生成的值
  2. 配置防火墙,只开放必要的端口
  3. 定期更新依赖包
  4. 使用 HTTPS(可配置 Nginx 反向代理)
  5. 定期备份重要数据