jshells/README.md

190 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <traefik容器名>
# 系统日志
journalctl -u docker
```
## 更新日志
- **v2.0**: 整合jsite.sh功能支持多种任务模式
- **v1.0**: 基础部署功能
## 许可证
MIT License