# jsite.sh - 前端自动化部署脚本 ## 概述 `jsite.sh` 是一个用于自动化部署和管理前端网站的bash脚本。它支持多种操作模式,包括部署、启动、停止、重启等。 ## 主要功能 - 自动创建和管理jingrow用户 - 安装和配置Node.js、npm、PM2 - 自动化部署前端项目 - 集成Traefik反向代理 - 支持多种操作模式 ## 使用方法 ### 基本语法 ```bash ./jsite.sh --mode <模式> --site-name <网站名称> ``` ### 支持的模式 | 模式 | 描述 | 示例 | |------|------|------| | `deploy` | 完整部署网站 | `--mode deploy --site-name myproject` | | `create` | 创建新网站 | `--mode create --site-name myproject` | | `delete` | 删除网站 | `--mode delete --site-name myproject` | | `build` | 构建网站 | `--mode build --site-name myproject` | | `start` | 启动网站 | `--mode start --site-name myproject` | | `stop` | 停止网站 | `--mode stop --site-name myproject` | | `restart` | 重启网站 | `--mode restart --site-name myproject` | | `status` | 查看网站状态 | `--mode status --site-name myproject` | | `list` | 列出所有网站 | `--mode list` | | `logs` | 查看网站日志 | `--mode logs --site-name myproject` | ### 常用命令示例 ```bash # 部署新网站 ./jsite.sh --mode deploy --site-name jingrow # 启动网站 ./jsite.sh --mode start --site-name jingrow # 重启网站 ./jsite.sh --mode restart --site-name jingrow # 查看网站状态 ./jsite.sh --mode status --site-name jingrow # 查看所有网站 ./jsite.sh --mode list ``` ## 故障排除 ### 常见错误及解决方案 #### 1. PM2进程未找到错误 **错误信息:** ``` [PM2][ERROR] Process or Namespace jingrow not found ``` **原因:** 网站尚未部署或PM2进程未正确启动 **解决方案:** 1. 首先检查网站是否存在: ```bash ./jsite.sh --mode status --site-name jingrow ``` 2. 如果网站不存在,先部署: ```bash ./jsite.sh --mode deploy --site-name jingrow ``` 3. 如果网站存在但未运行,启动网站: ```bash ./jsite.sh --mode start --site-name jingrow ``` #### 2. 权限错误 **解决方案:** ```bash # 确保脚本有执行权限 chmod +x jsite.sh # 以root用户运行 sudo ./jsite.sh --mode start --site-name jingrow ``` #### 3. 端口冲突 **解决方案:** ```bash # 检查端口占用 netstat -tlnp | grep :3001 # 停止占用端口的进程 sudo kill -9 <进程ID> ``` ### 手动检查和修复 #### 检查PM2状态 ```bash # 切换到jingrow用户 su - jingrow # 加载nvm环境 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # 查看PM2进程列表 pm2 list # 查看PM2日志 pm2 logs ``` #### 手动启动PM2进程 ```bash # 切换到jingrow用户 su - jingrow # 加载nvm环境 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # 启动进程 pm2 start jingrow # 或者重新加载配置 pm2 reload jingrow ``` ## 配置说明 ### 环境变量 脚本支持以下环境变量配置: - `SITE_NAME`: 网站名称(默认:jingrow) - `GIT_REPO`: Git仓库地址 - `NODE_VERSION`: Node.js版本(默认:22) - `START_PORT`: 起始端口(默认:3001) - `SITE_URL`: 网站域名 - `BACKEND_SERVER_URL`: 后端服务器地址 ### 目录结构 ``` /home/jingrow/ ├── jsite/ # 网站项目目录 ├── .nvm/ # Node版本管理器 ├── traefik-docker/ # Traefik配置 └── ... ``` ## 注意事项 1. 脚本需要以root权限运行 2. 确保服务器有足够的磁盘空间和内存 3. 确保网络连接正常,能够访问Git仓库 4. 建议在生产环境使用前先在测试环境验证 ## 更新日志 ### v1.1.0 - 修复了start_site和restart_site函数的无限递归问题 - 改进了错误处理和日志输出 - 优化了PM2进程管理逻辑 ## 技术支持 如果遇到问题,请检查: 1. 脚本执行日志 2. PM2进程状态 3. 系统资源使用情况 4. 网络连接状态