107 lines
2.9 KiB
Bash
Executable File
107 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# PM2 安装和配置脚本
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
echo "=========================================="
|
|
echo "PM2 安装和配置脚本"
|
|
echo "=========================================="
|
|
|
|
# 1. 配置 npm 镜像源
|
|
echo ""
|
|
echo "[步骤 1/7] 配置 npm 镜像源..."
|
|
npm config set registry https://registry.npmmirror.com
|
|
echo "✓ npm 镜像源已配置为: https://registry.npmmirror.com"
|
|
|
|
# 2. 检查并安装 pm2
|
|
echo ""
|
|
echo "[步骤 2/7] 检查 pm2 是否已安装..."
|
|
if ! command -v pm2 &> /dev/null; then
|
|
echo "pm2 未安装,开始安装..."
|
|
npm install -g pm2
|
|
echo "✓ pm2 安装成功"
|
|
else
|
|
echo "✓ pm2 已安装"
|
|
pm2 --version
|
|
fi
|
|
|
|
# 3. 检查并删除旧的 devops-monitor 进程
|
|
echo ""
|
|
echo "[步骤 3/7] 检查是否存在旧的 devops-monitor 进程..."
|
|
if pm2 list | grep -q "devops-monitor"; then
|
|
echo "发现旧的 devops-monitor 进程,删除中..."
|
|
pm2 delete devops-monitor
|
|
echo "✓ 旧进程已删除"
|
|
else
|
|
echo "✓ 未发现旧进程"
|
|
fi
|
|
|
|
# 4. 启动 devops-monitor 进程
|
|
echo ""
|
|
echo "[步骤 4/7] 启动 devops-monitor 进程..."
|
|
cd "$SCRIPT_DIR"
|
|
pm2 start ./devops/monitor.py --name devops-monitor --interpreter python3
|
|
echo "✓ devops-monitor 进程已启动"
|
|
|
|
# 5. 查看进程列表
|
|
echo ""
|
|
echo "[步骤 5/7] 查看 PM2 进程列表..."
|
|
pm2 list
|
|
|
|
# 6. 配置开机自启动
|
|
echo ""
|
|
echo "[步骤 6/7] 配置开机自启动..."
|
|
echo "注意: 此步骤可能需要输入密码"
|
|
echo ""
|
|
|
|
# 执行 pm2 startup 并捕获输出
|
|
STARTUP_OUTPUT=$(pm2 startup 2>&1)
|
|
echo "$STARTUP_OUTPUT"
|
|
|
|
# 检查是否需要执行 sudo 命令
|
|
if echo "$STARTUP_OUTPUT" | grep -q "sudo env"; then
|
|
echo ""
|
|
echo "检测到需要执行 sudo 命令来配置开机自启动"
|
|
echo "请复制上面的 sudo 命令并手动执行,或者按 Ctrl+C 跳过此步骤"
|
|
echo ""
|
|
|
|
# 提取 sudo 命令
|
|
SUDO_CMD=$(echo "$STARTUP_OUTPUT" | grep "sudo env" | tail -1)
|
|
|
|
if [ -n "$SUDO_CMD" ]; then
|
|
echo "是否现在执行此命令? (y/n)"
|
|
read -r response
|
|
if [[ "$response" =~ ^[Yy]$ ]]; then
|
|
eval "$SUDO_CMD"
|
|
echo "✓ 开机自启动配置完成"
|
|
else
|
|
echo "⚠ 跳过开机自启动配置"
|
|
echo "如需配置,请手动执行以下命令:"
|
|
echo "$SUDO_CMD"
|
|
fi
|
|
fi
|
|
else
|
|
echo "✓ 开机自启动配置完成"
|
|
fi
|
|
|
|
# 7. 保存 PM2 配置
|
|
echo ""
|
|
echo "[步骤 7/7] 保存 PM2 配置..."
|
|
pm2 save
|
|
echo "✓ PM2 配置已保存"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "PM2 安装和配置完成!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "常用命令:"
|
|
echo " pm2 list - 查看进程列表"
|
|
echo " pm2 logs devops-monitor - 查看日志"
|
|
echo " pm2 restart devops-monitor - 重启进程"
|
|
echo " pm2 stop devops-monitor - 停止进程"
|
|
echo " pm2 delete devops-monitor - 删除进程"
|
|
echo ""
|