jshells/README.md

187 lines
4.0 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.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. 网络连接状态