6.3 KiB
6.3 KiB
🎉 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
这个脚本会自动完成:
- ✅ 检查并安装 sshpass
- ✅ 连接服务器
- ✅ 创建 Docker Compose 配置
- ✅ 启动 PostgreSQL 容器(端口5433)
- ✅ 创建
flnxi_db数据库 - ✅ 创建
users表 - ✅ 配置环境变量
- ✅ 验证连接
预计时间: 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) | 用户名 |
| 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
⚠️ 注意事项
-
密码安全
- 数据库密码已在脚本中设置
- 请勿将密码提交到 Git
- 生产环境建议更改密码
-
数据备份
- 建议每天备份数据库
- 保留至少7天的备份
-
端口选择
- 使用5433避免与系统PostgreSQL冲突
- 仅监听 localhost,外部无法访问
-
容器管理
- 设置了自动重启(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 开始部署!