jsite.sh - 前端自动化部署脚本
概述
jsite.sh 是一个用于自动化部署和管理前端网站的bash脚本。它支持多种操作模式,包括部署、启动、停止、重启等。
主要功能
- 自动创建和管理jingrow用户
- 安装和配置Node.js、npm、PM2
- 自动化部署前端项目
- 集成Traefik反向代理
- 支持多种操作模式
使用方法
基本语法
./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 |
常用命令示例
# 部署新网站
./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进程未正确启动
解决方案:
-
首先检查网站是否存在:
./jsite.sh --mode status --site-name jingrow -
如果网站不存在,先部署:
./jsite.sh --mode deploy --site-name jingrow -
如果网站存在但未运行,启动网站:
./jsite.sh --mode start --site-name jingrow
2. 权限错误
解决方案:
# 确保脚本有执行权限
chmod +x jsite.sh
# 以root用户运行
sudo ./jsite.sh --mode start --site-name jingrow
3. 端口冲突
解决方案:
# 检查端口占用
netstat -tlnp | grep :3001
# 停止占用端口的进程
sudo kill -9 <进程ID>
手动检查和修复
检查PM2状态
# 切换到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进程
# 切换到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配置
└── ...
注意事项
- 脚本需要以root权限运行
- 确保服务器有足够的磁盘空间和内存
- 确保网络连接正常,能够访问Git仓库
- 建议在生产环境使用前先在测试环境验证
更新日志
v1.1.0
- 修复了start_site和restart_site函数的无限递归问题
- 改进了错误处理和日志输出
- 优化了PM2进程管理逻辑
技术支持
如果遇到问题,请检查:
- 脚本执行日志
- PM2进程状态
- 系统资源使用情况
- 网络连接状态
Description
Languages
Shell
100%