Files
chinese-family-tree-2/部署说明.md
T
freedakgmail 3b0d8255f6 0.0.8.1
2025-11-23 19:38:51 +08:00

265 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 部署说明
## ✅ 免密登录已配置成功
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