safety-eval-service/docs/gbs/scripts/dubbo-dev-proxy/dubbo-proxy-install.sh

78 lines
2.2 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# 在 192.168.20.100 安装 Dubbo 开发代理(方案 C
set -euo pipefail
INSTALL_DIR="${INSTALL_DIR:-/opt/dubbo-dev-proxy}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "[1/5] 安装 socat"
if command -v yum >/dev/null 2>&1; then
yum install -y socat
elif command -v dnf >/dev/null 2>&1; then
dnf install -y socat
elif command -v apt-get >/dev/null 2>&1; then
apt-get update && apt-get install -y socat
else
echo "请手动安装 socat" >&2
exit 1
fi
echo "[2/5] 安装脚本与配置到 ${INSTALL_DIR}"
mkdir -p "$INSTALL_DIR"
install -m 0644 "${SCRIPT_DIR}/dubbo-proxy.map" "${INSTALL_DIR}/dubbo-proxy.map"
install -m 0755 "${SCRIPT_DIR}/dubbo-proxy-refresh.sh" "${INSTALL_DIR}/dubbo-proxy-refresh.sh"
install -m 0755 "${SCRIPT_DIR}/dubbo-proxy-status.sh" "${INSTALL_DIR}/dubbo-proxy-status.sh"
install -m 0755 "${SCRIPT_DIR}/dubbo-proxy-stop.sh" "${INSTALL_DIR}/dubbo-proxy-stop.sh"
echo "[3/5] 开放防火墙端口 32080-32100仅开发代理"
if command -v firewall-cmd >/dev/null 2>&1 && systemctl is-active firewalld >/dev/null 2>&1; then
firewall-cmd --permanent --add-port=32080-32100/tcp || true
firewall-cmd --reload || true
echo "firewalld 已开放 32080-32100/tcp"
else
echo "未检测到 firewalld跳过防火墙配置"
fi
echo "[4/5] 安装 systemd 服务"
cat > /etc/systemd/system/dubbo-dev-proxy.service <<EOF
[Unit]
Description=GBS Dubbo Dev Proxy Refresh
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=${INSTALL_DIR}/dubbo-proxy-refresh.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/dubbo-dev-proxy.timer <<EOF
[Unit]
Description=Refresh GBS Dubbo Dev Proxy every 3 minutes
[Timer]
OnBootSec=90s
OnUnitActiveSec=180s
AccuracySec=30s
Unit=dubbo-dev-proxy.service
[Install]
WantedBy=timers.target
EOF
systemctl daemon-reload
systemctl enable dubbo-dev-proxy.service dubbo-dev-proxy.timer
systemctl start dubbo-dev-proxy.service
systemctl start dubbo-dev-proxy.timer
echo "[5/5] 首次刷新完成,查看状态:"
"${INSTALL_DIR}/dubbo-proxy-status.sh"
echo
echo "安装完成。Pod 漂移后由 timer 自动刷新,也可手动执行:"
echo " ${INSTALL_DIR}/dubbo-proxy-refresh.sh"