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
+264
View File
@@ -0,0 +1,264 @@
# 部署说明
## ✅ 免密登录已配置成功
SSH免密登录已成功配置到服务器 `115.190.235.230`
## 📋 配置信息
- **服务器IP**: 115.190.235.230
- **SSH端口**: 22(标准SSH端口)
- **应用端口**: 8006Next.js应用对外访问端口)
- **SSH用户**: root
- **部署目录**: /var/www/chinese-family-tree
## 🚀 一键部署
现在可以直接运行部署脚本,无需输入密码:
```bash
./deploy.sh
```
## 📝 部署流程
脚本会自动完成以下步骤:
1. ✓ 检查SSH密钥
2. ✓ 测试服务器连接
3. ✓ 配置免密登录(已完成)
4. ✓ 本地构建项目
5. ✓ 配置服务器环境(安装Node.js、pnpm、PM2
6. ✓ 上传文件到服务器
7. ✓ 启动应用(监听8006端口)
## 🌐 访问地址
部署成功后,应用访问地址:
```
http://115.190.235.230:8006
```
## 🔧 常用管理命令
### 查看应用状态
```bash
ssh root@115.190.235.230 'pm2 status'
```
### 查看应用日志
```bash
ssh root@115.190.235.230 'pm2 logs chinese-family-tree'
```
### 重启应用
```bash
ssh root@115.190.235.230 'pm2 restart chinese-family-tree'
```
### 停止应用
```bash
ssh root@115.190.235.230 'pm2 stop chinese-family-tree'
```
### 查看实时日志
```bash
ssh root@115.190.235.230 'pm2 logs chinese-family-tree --lines 100'
```
## ⚙️ 服务器环境变量配置
在首次部署前,需要在服务器上配置 `.env` 文件:
```bash
# 登录服务器
ssh root@115.190.235.230
# 进入部署目录
cd /var/www/chinese-family-tree
# 创建环境变量文件
nano .env
```
添加以下内容(根据实际情况修改):
```env
# 数据库配置
DATABASE_URL="postgresql://user:password@localhost:5432/family_tree"
# NextAuth 配置
NEXTAUTH_URL="http://115.190.235.230:8006"
NEXTAUTH_SECRET="your-production-secret-key-change-this"
# 邮箱服务器配置
SMTP_HOST="smtp.163.com"
SMTP_PORT="465"
SMTP_USER="cftservice@163.com"
SMTP_PASS="SChncqpqS9TDPUD2"
SMTP_FROM="cftservice@163.com"
# 生产环境
NODE_ENV="production"
```
## 🗄️ 数据库配置
### 安装PostgreSQL
```bash
# 登录服务器
ssh root@115.190.235.230
# 安装PostgreSQL
apt-get update
apt-get install -y postgresql postgresql-contrib
# 创建数据库和用户
sudo -u postgres psql << EOF
CREATE DATABASE family_tree;
CREATE USER family_tree_user WITH PASSWORD 'your_secure_password';
GRANT ALL PRIVILEGES ON DATABASE family_tree TO family_tree_user;
\q
EOF
```
### 更新数据库连接字符串
修改 `.env` 文件中的 `DATABASE_URL`
```env
DATABASE_URL="postgresql://family_tree_user:your_secure_password@localhost:5432/family_tree"
```
## 🔥 防火墙配置
确保服务器防火墙开放必要端口:
```bash
# Ubuntu/Debian
ufw allow 22/tcp # SSH
ufw allow 8006/tcp # 应用端口
ufw enable
ufw status
# 或使用 iptables
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 8006 -j ACCEPT
iptables-save
```
## 🔄 更新部署
当代码有更新时,直接运行部署脚本即可:
```bash
./deploy.sh
```
脚本会自动:
1. 构建最新代码
2. 上传到服务器
3. 安装依赖
4. 运行数据库迁移
5. 重启应用
## 🐛 故障排查
### 应用无法启动
```bash
# 查看详细日志
ssh root@115.190.235.230 'pm2 logs chinese-family-tree --lines 50'
# 检查应用状态
ssh root@115.190.235.230 'pm2 status'
# 手动启动测试
ssh root@115.190.235.230 'cd /var/www/chinese-family-tree && PORT=8006 npm start'
```
### 端口被占用
```bash
# 查看端口占用
ssh root@115.190.235.230 'lsof -i :8006'
# 或使用 netstat
ssh root@115.190.235.230 'netstat -tulpn | grep 8006'
```
### 数据库连接失败
```bash
# 测试数据库连接
ssh root@115.190.235.230 'cd /var/www/chinese-family-tree && npx prisma db pull'
# 检查PostgreSQL状态
ssh root@115.190.235.230 'systemctl status postgresql'
```
## 📊 性能优化
### 使用PM2集群模式
```bash
ssh root@115.190.235.230
cd /var/www/chinese-family-tree
pm2 delete chinese-family-tree
PORT=8006 pm2 start npm --name "chinese-family-tree" -i max -- start
pm2 save
```
### 配置日志轮转
```bash
ssh root@115.190.235.230
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
```
## 🔒 安全建议
1. **修改默认密码**:确保服务器root密码足够强
2. **配置防火墙**:只开放必要端口
3. **定期更新**:保持系统和依赖包最新
4. **使用HTTPS**:配置SSL证书(推荐使用Let's Encrypt
5. **限制SSH访问**:考虑使用fail2ban防止暴力破解
6. **备份数据**:定期备份数据库和应用文件
## 📦 备份方案
### 数据库备份
```bash
# 创建备份
ssh root@115.190.235.230 'pg_dump -U family_tree_user family_tree > /backup/db_$(date +%Y%m%d).sql'
# 下载备份到本地
scp root@115.190.235.230:/backup/db_*.sql ./backups/
```
### 应用文件备份
```bash
# 创建应用备份
ssh root@115.190.235.230 'tar -czf /backup/app_$(date +%Y%m%d).tar.gz /var/www/chinese-family-tree'
# 下载到本地
scp root@115.190.235.230:/backup/app_*.tar.gz ./backups/
```
## 📞 技术支持
如遇到问题,请检查:
1. 服务器日志:`/var/log/syslog``/var/log/messages`
2. PM2日志:`pm2 logs chinese-family-tree`
3. 应用日志:检查应用目录下的日志文件
4. 数据库日志:PostgreSQL日志文件
---
**最后更新**: 2025-11-23