265 lines
5.3 KiB
Markdown
265 lines
5.3 KiB
Markdown
# 部署说明
|
||
|
||
## ✅ 免密登录已配置成功
|
||
|
||
SSH免密登录已成功配置到服务器 `115.190.235.230`
|
||
|
||
## 📋 配置信息
|
||
|
||
- **服务器IP**: 115.190.235.230
|
||
- **SSH端口**: 22(标准SSH端口)
|
||
- **应用端口**: 8006(Next.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
|