Files
plates-server/DEPLOY.md

225 lines
4.5 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.

# 部署说明
本项目提供了三个发布脚本用于部署到服务器:
## 脚本说明
### 1. `deploy-optimized.sh` - 优化版发布脚本 ⭐ 推荐
- 只上传源代码,服务器端构建
- 充分利用 `start.sh` 的逻辑
- 传输文件少,部署速度快
- 包含完整的错误处理和备份
### 2. `deploy.sh` - 完整版发布脚本
- 本地构建后上传
- 功能完整,包含错误处理、备份、日志等
- 支持干运行模式和帮助信息
- 自动清理临时文件
### 3. `deploy-simple.sh` - 简化版发布脚本
- 简单直接,适合快速部署
- 代码简洁,易于理解和修改
## 服务器配置
- **服务器地址**: 129.204.155.94
- **用户**: root可在脚本中修改
- **部署目录**: /usr/local/web/pilates-server
## 使用前准备
### 1. 配置SSH密钥认证
```bash
# 生成SSH密钥如果还没有
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 将公钥复制到服务器
ssh-copy-id root@129.204.155.94
```
### 2. 服务器环境要求
确保服务器上已安装:
- Node.js (建议v18+)
- yarn
- pm2
- rsync
### 3. 本地环境要求
确保本地已安装:
- rsync
- ssh
## 使用方法
### 方法一:使用优化版脚本(推荐)
```bash
# 直接部署
./deploy-optimized.sh
```
### 方法二:使用完整版脚本
```bash
# 查看帮助
./deploy.sh --help
# 模拟运行(不实际部署)
./deploy.sh --dry-run
# 正式部署
./deploy.sh
```
### 方法三:使用简化版脚本
```bash
# 直接部署
./deploy-simple.sh
```
## 部署流程
### 优化版部署流程(推荐)
1. **测试连接**
- 验证SSH连接是否正常
2. **停止服务**
- 停止现有PM2服务
3. **备份部署**
- 自动备份现有部署
4. **同步源码**
- 只上传源代码和配置文件
- 排除 node_modules、dist、.git、.env 等敏感文件
5. **服务器构建**
- 执行 `start.sh` 脚本
- 自动安装依赖、构建项目、启动服务
6. **验证部署**
- 检查PM2服务状态
### 传统部署流程
1. **本地构建**
- 安装依赖 (`yarn install`)
- 构建项目 (`yarn build`)
2. **文件同步**
- 将构建后的文件同步到服务器
- 排除不必要的文件node_modules、.git等
3. **服务器操作**
- 停止现有服务
- 备份现有部署
- 执行 `start.sh` 启动服务
4. **验证部署**
- 检查PM2服务状态
- 显示常用管理命令
## 常用管理命令
```bash
# 查看服务状态
ssh root@129.204.155.94 'cd /usr/local/web/pilates-server && pm2 status'
# 查看日志
ssh root@129.204.155.94 'cd /usr/local/web/pilates-server && pm2 logs'
# 重启服务
ssh root@129.204.155.94 'cd /usr/local/web/pilates-server && pm2 restart ecosystem.config.js'
# 停止服务
ssh root@129.204.155.94 'cd /usr/local/web/pilates-server && pm2 stop ecosystem.config.js'
```
## 自定义配置
如需修改服务器配置,请编辑脚本文件中的以下变量:
```bash
SERVER_HOST="129.204.155.94" # 服务器地址
SERVER_USER="root" # SSH用户名
SERVER_PATH="/usr/local/web/pilates-server" # 部署目录
```
## 故障排除
### 1. SSH连接失败
- 检查服务器地址是否正确
- 确认SSH密钥是否配置正确
- 检查服务器是否可访问
### 2. 文件同步失败
- 检查rsync是否安装
- 确认网络连接正常
- 检查服务器磁盘空间
### 3. 服务启动失败
- 检查服务器上的Node.js版本
- 确认pm2是否正确安装
- 查看服务器上的错误日志
### 4. 权限问题
- 确保对目标目录有写权限
- 检查SSH用户的权限设置
## 注意事项
1. **首次部署**:确保服务器上的目标目录存在且有权限
2. **环境变量**
- 本地的 `.env` 文件不会上传到服务器(出于安全考虑)
- 需要在服务器上手动创建 `.env` 文件并配置相应的环境变量
- 或者通过其他方式管理生产环境的环境变量
3. **数据库**:确保服务器上的数据库配置正确
4. **防火墙**确保服务器端口默认3000已开放
5. **备份**:重要数据建议定期备份
## 环境变量管理
发布脚本会自动忽略以下环境变量文件:
- `.env`
- `.env.local`
- `.env.*.local`
**首次部署后,请在服务器上手动创建环境变量文件:**
```bash
# 登录服务器
ssh root@129.204.155.94
# 进入项目目录
cd /usr/local/web/pilates-server
# 创建生产环境配置文件
nano .env
# 或者从模板复制
cp .env.example .env # 如果有模板文件
```