5.3 KiB
5.3 KiB
部署说明
✅ 免密登录已配置成功
SSH免密登录已成功配置到服务器 115.190.235.230
📋 配置信息
- 服务器IP: 115.190.235.230
- SSH端口: 22(标准SSH端口)
- 应用端口: 8006(Next.js应用对外访问端口)
- SSH用户: root
- 部署目录: /var/www/chinese-family-tree
🚀 一键部署
现在可以直接运行部署脚本,无需输入密码:
./deploy.sh
📝 部署流程
脚本会自动完成以下步骤:
- ✓ 检查SSH密钥
- ✓ 测试服务器连接
- ✓ 配置免密登录(已完成)
- ✓ 本地构建项目
- ✓ 配置服务器环境(安装Node.js、pnpm、PM2)
- ✓ 上传文件到服务器
- ✓ 启动应用(监听8006端口)
🌐 访问地址
部署成功后,应用访问地址:
http://115.190.235.230:8006
🔧 常用管理命令
查看应用状态
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 'pm2 logs chinese-family-tree --lines 100'
⚙️ 服务器环境变量配置
在首次部署前,需要在服务器上配置 .env 文件:
# 登录服务器
ssh root@115.190.235.230
# 进入部署目录
cd /var/www/chinese-family-tree
# 创建环境变量文件
nano .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
# 登录服务器
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:
DATABASE_URL="postgresql://family_tree_user:your_secure_password@localhost:5432/family_tree"
🔥 防火墙配置
确保服务器防火墙开放必要端口:
# 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
🔄 更新部署
当代码有更新时,直接运行部署脚本即可:
./deploy.sh
脚本会自动:
- 构建最新代码
- 上传到服务器
- 安装依赖
- 运行数据库迁移
- 重启应用
🐛 故障排查
应用无法启动
# 查看详细日志
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'
端口被占用
# 查看端口占用
ssh root@115.190.235.230 'lsof -i :8006'
# 或使用 netstat
ssh root@115.190.235.230 'netstat -tulpn | grep 8006'
数据库连接失败
# 测试数据库连接
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集群模式
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
配置日志轮转
ssh root@115.190.235.230
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
🔒 安全建议
- 修改默认密码:确保服务器root密码足够强
- 配置防火墙:只开放必要端口
- 定期更新:保持系统和依赖包最新
- 使用HTTPS:配置SSL证书(推荐使用Let's Encrypt)
- 限制SSH访问:考虑使用fail2ban防止暴力破解
- 备份数据:定期备份数据库和应用文件
📦 备份方案
数据库备份
# 创建备份
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/
应用文件备份
# 创建应用备份
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/
📞 技术支持
如遇到问题,请检查:
- 服务器日志:
/var/log/syslog或/var/log/messages - PM2日志:
pm2 logs chinese-family-tree - 应用日志:检查应用目录下的日志文件
- 数据库日志:PostgreSQL日志文件
最后更新: 2025-11-23