xiaso-flnxi-website/DATABASE_DEPLOY_SUMMARY.md
Your Name b1eab32c75 初始提交: FLNXI电商素材系统官方网站
- Next.js 项目框架
- 完整的认证系统集成
- 数据库配置和部署脚本
- 产品价格体系和文档
- Docker 部署配置
2025-12-13 21:38:32 +08:00

6.3 KiB
Raw Blame History

🎉 PostgreSQL 数据库部署方案总结

📦 已创建的文件

文件 说明
DATABASE_SETUP_GUIDE.md 详细的数据库配置指南(手动操作)
one-click-database-setup.sh 一键自动化部署脚本(推荐)
deploy-database.sh Docker完整部署脚本
setup-existing-postgres.sh 使用现有PostgreSQL配置脚本
DATABASE_CONFIG.md 数据库连接信息(运行后生成)

🚀 推荐:一键部署(最简单)

运行命令

cd /Users/lanmu/Desktop/xiaso
bash one-click-database-setup.sh

这个脚本会自动完成:

  1. ✅ 检查并安装 sshpass
  2. ✅ 连接服务器
  3. ✅ 创建 Docker Compose 配置
  4. ✅ 启动 PostgreSQL 容器(端口5433)
  5. ✅ 创建 flnxi_db 数据库
  6. ✅ 创建 users 表
  7. ✅ 配置环境变量
  8. ✅ 验证连接

预计时间: 3-5分钟


📊 数据库配置信息

部署完成后,数据库信息如下:

容器名称: flnxi-postgres
数据库名: flnxi_db
用户名: flnxi_user
密码: Flnxi@2025!SecurePassword
端口: 5433 (避免与系统PostgreSQL的5432冲突)

连接字符串:

postgresql://flnxi_user:Flnxi@2025!SecurePassword@localhost:5433/flnxi_db?schema=public

🗄️ 数据库表结构

users 表

字段 类型 说明
id SERIAL 主键,自增
name VARCHAR(255) 用户名
email VARCHAR(255) 邮箱(唯一)
password VARCHAR(255) 密码(将使用bcrypt加密)
email_verified BOOLEAN 邮箱是否验证,默认false
created_at TIMESTAMP 创建时间
updated_at TIMESTAMP 更新时间

索引:

  • idx_users_email - 邮箱索引(加速查询)
  • idx_users_created_at - 创建时间索引

🔍 验证数据库

部署完成后,验证数据库是否正常:

方式1:在服务器上

ssh root@45.249.208.118

# 查看容器状态
docker ps | grep flnxi-postgres

# 连接数据库
docker exec -it flnxi-postgres psql -U flnxi_user -d flnxi_db

# 在psql中执行
\dt          -- 查看表
\d users     -- 查看表结构
SELECT * FROM users;  -- 查看数据(目前为空)
\q           -- 退出

方式2:从本地

sshpass -p "lxvhNYFZ4160" ssh root@45.249.208.118 \
  "docker exec flnxi-postgres psql -U flnxi_user -d flnxi_db -c 'SELECT current_database();'"

📝 下一步操作

数据库配置完成后,需要更新代码来使用数据库:

1. 安装依赖

在本地项目中:

cd /Users/lanmu/Desktop/xiaso

# 安装 Prisma ORM (可选,简化数据库操作)
npm install @prisma/client
npm install -D prisma

# 安装 bcrypt (必需,用于密码加密)
npm install bcrypt
npm install --save-dev @types/bcrypt

# 安装 PostgreSQL 客户端 (如果不用Prisma)
npm install pg
npm install --save-dev @types/pg

2. 更新注册 API

文件:app/api/auth/register/route.ts

需要:

  • 连接数据库
  • 使用 bcrypt 加密密码
  • 将用户数据存入数据库

3. 更新登录 API

文件:app/api/auth/[...nextauth]/route.ts

需要:

  • 从数据库查询用户
  • 使用 bcrypt 验证密码

4. 重新部署

# 上传更新的代码
# 重新构建 Docker
# 测试注册和登录功能

🛠️ 数据库管理

常用命令

# 连接服务器
ssh root@45.249.208.118

# 查看数据库状态
docker ps | grep flnxi-postgres

# 查看日志
docker logs flnxi-postgres

# 重启数据库
cd /opt/flnxi-website
docker-compose -f docker-compose-db.yml restart

# 停止数据库
docker-compose -f docker-compose-db.yml stop

# 启动数据库
docker-compose -f docker-compose-db.yml start

备份数据

# 在服务器上执行
docker exec flnxi-postgres pg_dump -U flnxi_user flnxi_db > backup_$(date +%Y%m%d).sql

# 或从本地执行
ssh root@45.249.208.118 \
  "docker exec flnxi-postgres pg_dump -U flnxi_user flnxi_db" > backup_$(date +%Y%m%d).sql

恢复数据

# 在服务器上
cat backup_20250101.sql | docker exec -i flnxi-postgres psql -U flnxi_user -d flnxi_db

⚠️ 注意事项

  1. 密码安全

    • 数据库密码已在脚本中设置
    • 请勿将密码提交到 Git
    • 生产环境建议更改密码
  2. 数据备份

    • 建议每天备份数据库
    • 保留至少7天的备份
  3. 端口选择

    • 使用5433避免与系统PostgreSQL冲突
    • 仅监听 localhost,外部无法访问
  4. 容器管理

    • 设置了自动重启(unless-stopped)
    • 服务器重启后自动恢复

🐛 故障排查

问题1:容器启动失败

# 查看日志
docker logs flnxi-postgres

# 常见原因:
# - 端口被占用:改用其他端口
# - 权限问题:检查Docker权限
# - 镜像拉取失败:重试或换镜像源

问题2:无法连接数据库

# 检查容器状态
docker ps | grep flnxi-postgres

# 测试连接
docker exec flnxi-postgres pg_isready -U flnxi_user

# 查看端口
netstat -tulpn | grep 5433

问题3:环境变量未生效

# 检查环境变量
cat /opt/flnxi-website/.env.local

# 确保包含 DATABASE_URL
# 重新部署应用使环境变量生效

📚 相关文档

  • DATABASE_SETUP_GUIDE.md - 详细配置指南
  • AUTH_INTEGRATION_GUIDE.md - 认证系统指南
  • SIGNUP_INTEGRATION_COMPLETE.md - 注册功能文档

✅ 部署检查清单

运行 one-click-database-setup.sh 后,确认:

  • PostgreSQL 容器正在运行
  • users 表已创建
  • 索引已创建
  • 环境变量已配置(DATABASE_URL)
  • 可以成功连接数据库
  • 可以查询表结构

🎯 完整流程总结

1. 部署数据库
   ↓
   bash one-click-database-setup.sh
   ↓
2. 验证数据库
   ↓
   docker exec flnxi-postgres psql -U flnxi_user -d flnxi_db -c '\dt'
   ↓
3. 安装依赖
   ↓
   npm install bcrypt @prisma/client
   ↓
4. 更新API代码
   ↓
   修改 register/route.ts 和 [...nextauth]/route.ts
   ↓
5. 部署到服务器
   ↓
   上传文件 → 重新构建 → 测试
   ↓
6. 测试功能
   ↓
   注册新用户 → 登录 → 验证

部署时间: 2025-10-27
预计耗时: 10-15分钟
难度: 简单

🎉 准备好了!现在运行 bash one-click-database-setup.sh 开始部署!