225 lines
4.5 KiB
Markdown
225 lines
4.5 KiB
Markdown
# 部署说明
|
||
|
||
本项目提供了三个发布脚本用于部署到服务器:
|
||
|
||
## 脚本说明
|
||
|
||
### 1. `deploy-optimized.sh` - 优化版发布脚本 ⭐ 推荐
|
||
|
||
- 只上传源代码,服务器端构建
|
||
- 充分利用 `start.sh` 的逻辑
|
||
- 传输文件少,部署速度快
|
||
- 包含完整的错误处理和备份
|
||
|
||
### 2. `deploy.sh` - 完整版发布脚本
|
||
|
||
- 本地构建后上传
|
||
- 功能完整,包含错误处理、备份、日志等
|
||
- 支持干运行模式和帮助信息
|
||
- 自动清理临时文件
|
||
|
||
### 3. `deploy-simple.sh` - 简化版发布脚本
|
||
|
||
- 简单直接,适合快速部署
|
||
- 代码简洁,易于理解和修改
|
||
|
||
## 服务器配置
|
||
|
||
- **服务器地址**: 119.91.211.52
|
||
- **用户**: 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@119.91.211.52
|
||
```
|
||
|
||
### 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@119.91.211.52 'cd /usr/local/web/pilates-server && pm2 status'
|
||
|
||
# 查看日志
|
||
ssh root@119.91.211.52 'cd /usr/local/web/pilates-server && pm2 logs'
|
||
|
||
# 重启服务
|
||
ssh root@119.91.211.52 'cd /usr/local/web/pilates-server && pm2 restart ecosystem.config.js'
|
||
|
||
# 停止服务
|
||
ssh root@119.91.211.52 'cd /usr/local/web/pilates-server && pm2 stop ecosystem.config.js'
|
||
```
|
||
|
||
## 自定义配置
|
||
|
||
如需修改服务器配置,请编辑脚本文件中的以下变量:
|
||
|
||
```bash
|
||
SERVER_HOST="119.91.211.52" # 服务器地址
|
||
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@119.91.211.52
|
||
|
||
# 进入项目目录
|
||
cd /usr/local/web/pilates-server
|
||
|
||
# 创建生产环境配置文件
|
||
nano .env
|
||
|
||
# 或者从模板复制
|
||
cp .env.example .env # 如果有模板文件
|
||
```
|