78 lines
2.2 KiB
Bash
78 lines
2.2 KiB
Bash
#!/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"
|