# jsite 自动化部署和管理脚本 这是一个集成了完整部署和日常管理功能的自动化脚本,支持多种任务模式。 ## 功能特性 - 🚀 **完整部署**:一键部署完整的jsite环境 - 🏗️ **网站管理**:创建、删除、构建、启动、停止、重启网站 - 📊 **状态监控**:查看网站运行状态和日志 - 🔧 **环境管理**:Docker、Node.js、PM2、Traefik等环境组件 - ⚡ **智能端口分配**:自动分配和管理端口资源 ## 使用方法 ### 基本语法 ```bash ./install_jsite.sh --mode <任务模式> [其他参数] ``` ### 支持的任务模式 | 模式 | 功能 | 示例 | |------|------|------| | `deploy` | 完整部署模式(默认) | `--mode deploy --site-name myproject` | | `create` | 创建新网站 | `--mode create --site-name myproject --git-repo <仓库地址>` | | `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` | ### 常用参数 | 参数 | 说明 | 默认值 | |------|------|--------| | `--mode` | 任务模式 | `deploy` | | `--site-name` | 网站名称 | `jingrow` | | `--git-repo` | Git仓库地址 | `http://git.jingrow.com:3000/jsite/jingrow` | | `--node-version` | Node.js版本 | `22` | | `--start-port` | 起始端口 | `3001` | | `--site-url` | 网站域名 | `starrbud.com` | ### 使用示例 #### 1. 完整部署新项目 ```bash ./install_jsite.sh \ --mode deploy \ --site-name myproject \ --git-repo http://git.example.com/myproject \ --site-url myproject.com \ --public-ip 8.217.167.199 ``` #### 2. 创建新网站 ```bash ./install_jsite.sh \ --mode create \ --site-name myproject \ --git-repo http://git.example.com/myproject \ --site-url myproject.com ``` #### 3. 构建和启动网站 ```bash # 构建项目 ./install_jsite.sh --mode build --site-name myproject # 启动项目 ./install_jsite.sh --mode start --site-name myproject ``` #### 4. 管理网站状态 ```bash # 查看状态 ./install_jsite.sh --mode status --site-name myproject # 停止网站 ./install_jsite.sh --mode stop --site-name myproject # 重启网站 ./install_jsite.sh --mode restart --site-name myproject ``` #### 5. 查看所有网站 ```bash ./install_jsite.sh --mode list ``` #### 6. 查看日志 ```bash ./install_jsite.sh --mode logs --site-name myproject ``` ## 工作流程 ### 完整部署流程 (deploy) 1. 创建jingrow用户 2. 安装Docker(可选跳过) 3. 安装Node.js和NVM 4. 克隆项目代码 5. 创建环境配置文件 6. 安装项目依赖 7. 安装PM2并启动项目 8. 安装Traefik并配置反向代理 ### 网站管理流程 - **create**: 克隆代码 → 分配端口 → 创建配置 → 提示下一步 - **build**: 安装依赖 → 构建项目 - **start**: 检查状态 → 分配端口 → 启动PM2进程 - **stop**: 停止PM2进程 - **restart**: 重启PM2进程或启动(如果未运行) - **delete**: 停止进程 → 清理配置 → 删除文件 ## 目录结构 ``` /home/jingrow/ ├── jsite/ # 网站项目目录 │ ├── myproject1/ # 项目1 │ ├── myproject2/ # 项目2 │ └── site_port.json # 端口分配记录 ├── traefik-docker/ # Traefik配置目录 │ └── conf.d/website/ # 网站配置文件 └── .nvm/ # Node.js版本管理 ``` ## 注意事项 1. **权限要求**:脚本需要root权限运行 2. **端口管理**:自动分配端口,避免冲突 3. **环境依赖**:确保系统支持Docker和Node.js 4. **域名配置**:需要正确配置DNS解析 5. **SSL证书**:Traefik自动申请Let's Encrypt证书 ## 故障排除 ### 常见问题 1. **端口被占用** - 检查端口分配文件:`/home/jingrow/jsite/site_port.json` - 手动修改端口或停止占用进程 2. **PM2启动失败** - 检查项目依赖是否正确安装 - 查看PM2日志:`pm2 logs <项目名>` - 确认package.json中有start脚本 3. **Traefik配置问题** - 检查配置文件:`/home/jingrow/traefik-docker/conf.d/website/` - 重启Traefik服务 4. **域名访问问题** - 确认DNS解析正确 - 检查防火墙设置 - 验证SSL证书状态 ### 日志查看 ```bash # PM2日志 pm2 logs <项目名> # Traefik日志 docker logs # 系统日志 journalctl -u docker ``` ## 更新日志 - **v2.0**: 整合jsite.sh功能,支持多种任务模式 - **v1.0**: 基础部署功能 ## 许可证 MIT License