# 部署说明 本项目提供了三个发布脚本用于部署到服务器: ## 脚本说明 ### 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 # 如果有模板文件 ```