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进程未正确启动

解决方案:

  1. 首先检查网站是否存在:

    ./jsite.sh --mode status --site-name jingrow
    
  2. 如果网站不存在,先部署:

    ./jsite.sh --mode deploy --site-name jingrow
    
  3. 如果网站存在但未运行,启动网站:

    ./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配置
└── ...

注意事项

  1. 脚本需要以root权限运行
  2. 确保服务器有足够的磁盘空间和内存
  3. 确保网络连接正常能够访问Git仓库
  4. 建议在生产环境使用前先在测试环境验证

更新日志

v1.1.0

  • 修复了start_site和restart_site函数的无限递归问题
  • 改进了错误处理和日志输出
  • 优化了PM2进程管理逻辑

技术支持

如果遇到问题,请检查:

  1. 脚本执行日志
  2. PM2进程状态
  3. 系统资源使用情况
  4. 网络连接状态
Description
No description provided
Readme 983 KiB
Languages
Shell 100%