0.0.8.1
This commit is contained in:
+258
@@ -0,0 +1,258 @@
|
||||
# 部署脚本检查报告
|
||||
|
||||
## ✅ 检查完成 - 脚本已优化
|
||||
|
||||
### 修复的问题
|
||||
|
||||
#### 1. ✅ 端口配置正确
|
||||
- **SSH端口**: 22(标准SSH端口,用于连接服务器)
|
||||
- **应用端口**: 8006(Next.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(优化版)
|
||||
**状态**: ✅ 已通过检查,可以部署
|
||||
Reference in New Issue
Block a user