This commit is contained in:
freedakgmail
2025-11-23 19:38:51 +08:00
parent e44dd0bd95
commit 3b0d8255f6
649 changed files with 656698 additions and 4133 deletions
+258
View File
@@ -0,0 +1,258 @@
# 部署脚本检查报告
## ✅ 检查完成 - 脚本已优化
### 修复的问题
#### 1. ✅ 端口配置正确
- **SSH端口**: 22(标准SSH端口,用于连接服务器)
- **应用端口**: 8006Next.js应用对外访问端口)
- 所有SSH命令使用 `$SSH_PORT`22
- PM2启动时使用 `PORT=$APP_PORT`8006
#### 2. ✅ PostgreSQL权限完善
增强了数据库权限配置,兼容PostgreSQL 15+
```sql
ALTER DATABASE family_tree OWNER TO family_tree_user;
GRANT ALL ON SCHEMA public TO family_tree_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO family_tree_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO family_tree_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO family_tree_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO family_tree_user;
```
#### 3. ✅ 环境变量配置优化
- 使用 `ENVEOF` 作为heredoc结束符,避免与EOF冲突
- 正确传递数据库配置变量到远程服务器
- 自动生成安全的 `NEXTAUTH_SECRET`
#### 4. ✅ rsync排除文件优化
新增排除项:
- `.env` - 避免覆盖服务器环境变量
- `check-server.sh` - 诊断脚本
- `deploy-manual.sh` - 手动部署脚本
- `setup-ssh-key.sh` - SSH配置脚本
- `*.tar.gz` - 打包文件
#### 5. ✅ PM2启动优化
```bash
PORT=$APP_PORT pm2 start npm --name "chinese-family-tree" -- start
pm2 save
pm2 startup systemd -u root --hp /root
```
## 📋 脚本完整流程
### 9个部署步骤
1. **[1/9] 检查SSH密钥**
- 检查 `~/.ssh/id_rsa` 是否存在
- 不存在则自动创建4096位RSA密钥
2. **[2/9] 测试服务器连接**
- 使用 `nc` 测试SSH端口22是否开放
- 验证服务器可访问性
3. **[3/9] 配置免密登录**
- 检查是否已配置免密登录
- 未配置则使用 `ssh-copy-id` 配置
- ✅ 已完成
4. **[4/9] 本地构建项目**
- `pnpm install` - 安装依赖
- `npx prisma generate` - 生成Prisma客户端
- `pnpm build` - 构建Next.js应用
5. **[5/9] 配置服务器环境**
- 安装Node.js 20.x(如未安装)
- 安装pnpm(如未安装)
- 安装PM2(如未安装)
- 创建部署目录
6. **[6/9] 配置PostgreSQL数据库**
- 检查PostgreSQL是否安装(未安装则自动安装)
- 检查数据库是否存在
- 创建数据库和用户(如不存在)
- 配置完整权限
7. **[7/9] 上传文件到服务器**
- 使用rsync同步文件
- 排除不必要的文件
- 显示上传进度
8. **[8/9] 配置环境变量**
- 检查.env文件是否存在
- 不存在则自动创建
- 配置数据库连接、NextAuth、SMTP等
9. **[9/9] 启动应用**
- 安装生产依赖
- 生成Prisma客户端
- 运行数据库迁移
- 使用PM2启动应用(监听8006端口)
- 配置开机自启动
## 🔧 配置信息
### 服务器配置
```bash
SERVER_IP="115.190.235.230"
SSH_PORT="22" # SSH连接端口
SERVER_USER="root"
REMOTE_DIR="/var/www/chinese-family-tree"
APP_PORT="8006" # 应用访问端口
```
### 数据库配置
```bash
DB_NAME="family_tree"
DB_USER="family_tree_user"
DB_PASSWORD="FamilyTree2024!@#" # 建议修改
```
### 自动生成的.env文件
```env
DATABASE_URL="postgresql://family_tree_user:FamilyTree2024!@#@localhost:5432/family_tree"
NEXTAUTH_URL="http://115.190.235.230:8006"
NEXTAUTH_SECRET="<自动生成的32字节随机字符串>"
SMTP_HOST="smtp.163.com"
SMTP_PORT="465"
SMTP_USER="cftservice@163.com"
SMTP_PASS="SChncqpqS9TDPUD2"
SMTP_FROM="cftservice@163.com"
NODE_ENV="production"
```
## 🚀 使用方法
### 1. 部署前检查
```bash
# 检查本地环境
pnpm --version
node --version
# 测试SSH连接
ssh root@115.190.235.230
# 检查免密登录
ssh -o BatchMode=yes root@115.190.235.230 "echo OK"
```
### 2. 执行部署
```bash
./deploy.sh
```
### 3. 访问应用
```
http://115.190.235.230:8006
```
## ⚠️ 重要提示
### 1. 数据库密码安全
**强烈建议**在首次部署前修改数据库密码:
```bash
# 编辑 deploy.sh 第13行
DB_PASSWORD="你的复杂密码"
```
### 2. 防火墙配置
确保服务器防火墙开放端口8006
```bash
# Ubuntu/Debian
sudo ufw allow 8006/tcp
sudo ufw status
# CentOS
sudo firewall-cmd --permanent --add-port=8006/tcp
sudo firewall-cmd --reload
```
### 3. 云服务器安全组
如果使用云服务器(阿里云、腾讯云等),需要在控制台配置安全组规则:
- 入站规则:允许TCP 8006端口
- 源地址:0.0.0.0/0(或指定IP
### 4. .env文件管理
- 脚本会自动创建.env文件
- 如果.env已存在,不会覆盖
- 可以手动修改服务器上的.env文件后重启应用
## 📊 部署时间估算
### 首次部署
- 本地构建:3-5分钟
- 服务器环境配置:5-10分钟(需要安装软件)
- 文件上传:2-5分钟(取决于网速)
- 数据库配置:1-2分钟
- 应用启动:1-2分钟
- **总计:12-24分钟**
### 后续更新
- 本地构建:3-5分钟
- 文件上传:1-3分钟
- 应用重启:1分钟
- **总计:5-9分钟**
## 🔍 验证清单
部署完成后,请验证:
- [ ] 应用可以访问:http://115.190.235.230:8006
- [ ] 数据库连接正常
- [ ] 用户注册功能正常
- [ ] 邮件发送功能正常
- [ ] PM2进程运行中:`ssh root@115.190.235.230 'pm2 status'`
- [ ] 应用日志无错误:`ssh root@115.190.235.230 'pm2 logs chinese-family-tree --lines 50'`
## 🛠️ 常用管理命令
```bash
# 查看应用状态
ssh root@115.190.235.230 'pm2 status'
# 查看实时日志
ssh root@115.190.235.230 'pm2 logs chinese-family-tree'
# 重启应用
ssh root@115.190.235.230 'pm2 restart chinese-family-tree'
# 停止应用
ssh root@115.190.235.230 'pm2 stop chinese-family-tree'
# 查看数据库
ssh root@115.190.235.230 'sudo -u postgres psql -d family_tree -c "\dt"'
# 查看.env文件
ssh root@115.190.235.230 'cat /var/www/chinese-family-tree/.env'
```
## 📝 总结
### ✅ 脚本已完成优化,可以直接使用
主要特点:
- ✅ 端口配置正确(SSH:22, APP:8006
- ✅ 自动化程度高(9个步骤全自动)
- ✅ 错误处理完善
- ✅ 数据库权限完整
- ✅ 环境变量自动配置
- ✅ PM2进程管理
- ✅ 免密登录已配置
### 🎯 下一步
直接运行部署:
```bash
./deploy.sh
```
---
**检查时间**: 2025-11-23 18:20
**脚本版本**: v1.0(优化版)
**状态**: ✅ 已通过检查,可以部署