322 lines
6.3 KiB
Markdown
322 lines
6.3 KiB
Markdown
# 🎉 PostgreSQL 数据库部署方案总结
|
||
|
||
## 📦 已创建的文件
|
||
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| `DATABASE_SETUP_GUIDE.md` | 详细的数据库配置指南(手动操作) |
|
||
| `one-click-database-setup.sh` | 一键自动化部署脚本(推荐) |
|
||
| `deploy-database.sh` | Docker完整部署脚本 |
|
||
| `setup-existing-postgres.sh` | 使用现有PostgreSQL配置脚本 |
|
||
| `DATABASE_CONFIG.md` | 数据库连接信息(运行后生成) |
|
||
|
||
---
|
||
|
||
## 🚀 推荐:一键部署(最简单)
|
||
|
||
### 运行命令
|
||
|
||
```bash
|
||
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:在服务器上
|
||
|
||
```bash
|
||
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:从本地
|
||
|
||
```bash
|
||
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. 安装依赖
|
||
|
||
在本地项目中:
|
||
|
||
```bash
|
||
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. 重新部署
|
||
|
||
```bash
|
||
# 上传更新的代码
|
||
# 重新构建 Docker
|
||
# 测试注册和登录功能
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠️ 数据库管理
|
||
|
||
### 常用命令
|
||
|
||
```bash
|
||
# 连接服务器
|
||
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
|
||
```
|
||
|
||
### 备份数据
|
||
|
||
```bash
|
||
# 在服务器上执行
|
||
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
|
||
```
|
||
|
||
### 恢复数据
|
||
|
||
```bash
|
||
# 在服务器上
|
||
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:容器启动失败
|
||
|
||
```bash
|
||
# 查看日志
|
||
docker logs flnxi-postgres
|
||
|
||
# 常见原因:
|
||
# - 端口被占用:改用其他端口
|
||
# - 权限问题:检查Docker权限
|
||
# - 镜像拉取失败:重试或换镜像源
|
||
```
|
||
|
||
### 问题2:无法连接数据库
|
||
|
||
```bash
|
||
# 检查容器状态
|
||
docker ps | grep flnxi-postgres
|
||
|
||
# 测试连接
|
||
docker exec flnxi-postgres pg_isready -U flnxi_user
|
||
|
||
# 查看端口
|
||
netstat -tulpn | grep 5433
|
||
```
|
||
|
||
### 问题3:环境变量未生效
|
||
|
||
```bash
|
||
# 检查环境变量
|
||
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` 开始部署!**
|
||
|