feat: 初始化项目
This commit is contained in:
224
DEPLOY.md
Normal file
224
DEPLOY.md
Normal file
@@ -0,0 +1,224 @@
|
||||
# 部署说明
|
||||
|
||||
本项目提供了三个发布脚本用于部署到服务器:
|
||||
|
||||
## 脚本说明
|
||||
|
||||
### 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 # 如果有模板文件
|
||||
```
|
||||
Reference in New Issue
Block a user