198 lines
3.9 KiB
Markdown
198 lines
3.9 KiB
Markdown
# 部署指南
|
||
|
||
## 项目部署到 TrueNAS 服务器
|
||
|
||
### 服务器信息
|
||
- 服务器地址: 192.168.58.20
|
||
- 用户名: root
|
||
- 部署路径: /mnt/tank/apps/youyidian-3d
|
||
- 访问地址: http://192.168.58.20:4320
|
||
|
||
### 自动部署(推荐)
|
||
|
||
使用提供的部署脚本:
|
||
|
||
```bash
|
||
cd /Users/lanmu/Desktop/gongxiangp2
|
||
./deploy.sh
|
||
```
|
||
|
||
脚本会自动:
|
||
1. 打包项目文件
|
||
2. 上传到 NAS 服务器
|
||
3. 构建 Docker 镜像
|
||
4. 启动容器
|
||
5. 运行数据库迁移
|
||
|
||
### 手动部署
|
||
|
||
#### 1. 打包项目
|
||
```bash
|
||
cd /Users/lanmu/Desktop/gongxiangp2
|
||
tar -czf project.tar.gz \
|
||
--exclude='node_modules' \
|
||
--exclude='.next' \
|
||
--exclude='.git' \
|
||
--exclude='uploads' \
|
||
.
|
||
```
|
||
|
||
#### 2. 上传到服务器
|
||
```bash
|
||
scp project.tar.gz root@192.168.58.20:/tmp/
|
||
```
|
||
|
||
#### 3. SSH 登录服务器
|
||
```bash
|
||
ssh root@192.168.58.20
|
||
# 密码: jsjj8888
|
||
```
|
||
|
||
#### 4. 部署应用
|
||
```bash
|
||
# 创建项目目录
|
||
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. 运行数据库迁移
|
||
```bash
|
||
docker-compose exec app npx prisma db push
|
||
```
|
||
|
||
### Docker 命令
|
||
|
||
```bash
|
||
# 查看容器状态
|
||
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:
|
||
```bash
|
||
openssl rand -base64 32
|
||
```
|
||
|
||
### 初始化数据库
|
||
|
||
第一次部署后,需要在数据库中插入初始场景数据:
|
||
|
||
```bash
|
||
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 登录服务器,设置为管理员:
|
||
|
||
```bash
|
||
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';
|
||
"
|
||
```
|
||
|
||
### 故障排查
|
||
|
||
#### 查看容器日志
|
||
```bash
|
||
docker-compose logs -f app
|
||
```
|
||
|
||
#### 进入容器
|
||
```bash
|
||
docker-compose exec app sh
|
||
```
|
||
|
||
#### 检查数据库连接
|
||
```bash
|
||
docker-compose exec app npx prisma db execute --stdin <<< "SELECT 1"
|
||
```
|
||
|
||
#### 重新生成 Prisma Client
|
||
```bash
|
||
docker-compose exec app npx prisma generate
|
||
```
|
||
|
||
### 备份和恢复
|
||
|
||
#### 备份上传文件
|
||
```bash
|
||
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. 定期备份重要数据
|
||
|