190 lines
4.9 KiB
Markdown
190 lines
4.9 KiB
Markdown
# 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
|
||
|