Files
huike-back/scripts/moicen_htyts_smoke.sh
weli 220265195c feat(moicen): htyts 预检脚本与一键栈 release 检测含 htyts/htyproc
- scripts/moicen_htyts_smoke.sh:Redis、PG/dbtask、本机 TS HTTP、可选公网 v2
- moicen_start:存在 target/release/htyts|htyproc 时也使用 --release

Made-with: Cursor
2026-04-26 20:30:55 +08:00

89 lines
2.9 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 在 **moicen** 上、于 huike-back 根执行:检查 htyts 依赖与 HTTP 探活(不启动进程)。
# 用法: ./scripts/moicen_htyts_smoke.sh
# 可选: MOICEN_HUIKE_ROOT=/path/to/huike-back
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
HUIKE="${MOICEN_HUIKE_ROOT:-$(cd "$SCRIPT_DIR/.." && pwd)}"
ENV_FILE="$HUIKE/htyts/.env"
if [ ! -f "$ENV_FILE" ]; then
echo "缺少 $ENV_FILE" >&2
echo "执行: cd \"$HUIKE\" && cp envs/moicen/htyts.env htyts/.env && 按实机编辑 TS_DATABASE_URL / JWT_KEY(须与 AuthCore/htyuc 一致)" >&2
exit 1
fi
read_kv() {
# 读取 KEY=value,忽略 # 行;value 可含 =,去掉首尾可选引号
local key="$1"
local line
line="$(grep -E "^[[:space:]]*${key}=" "$ENV_FILE" | tail -n1)" || true
if [ -z "$line" ]; then
echo ""
return
fi
local v="${line#*=}"
v="${v%$'\r'}"
v="${v#\"}"
v="${v%\"}"
v="${v#\'}"
v="${v%\'}"
printf '%s' "$v"
}
TS_DB_URL="$(read_kv TS_DATABASE_URL)"
if [ -z "$TS_DB_URL" ]; then
TS_DB_URL="$(read_kv DATABASE_URL)"
fi
REDIS_HOST="$(read_kv REDIS_HOST)"
REDIS_PORT="$(read_kv REDIS_PORT)"
TS_PORT="$(read_kv TS_PORT)"
[ -n "${REDIS_HOST:-}" ] || REDIS_HOST=127.0.0.1
[ -n "${REDIS_PORT:-}" ] || REDIS_PORT=6379
[ -n "${TS_PORT:-}" ] || TS_PORT=3003
echo "== Redis $REDIS_HOST:$REDIS_PORT =="
if ! command -v redis-cli >/dev/null 2>&1; then
echo "未安装 redis-cli,跳过 Redis 检查" >&2
else
redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ping | grep -q PONG || {
echo "Redis 无 PONG" >&2
exit 1
}
echo "OK"
fi
echo "== PostgreSQLTS_DATABASE_URL =="
if [ -z "$TS_DB_URL" ]; then
echo "未找到 TS_DATABASE_URL / DATABASE_URL" >&2
exit 1
fi
if ! command -v psql >/dev/null 2>&1; then
echo "未安装 psql,跳过 PG 检查" >&2
else
psql "$TS_DB_URL" -v ON_ERROR_STOP=1 -c "select 1" >/dev/null
psql "$TS_DB_URL" -v ON_ERROR_STOP=1 -c "select count(*) as dbtask_rows from dbtask" || {
echo "dbtask 表不存在或不可读:在 htyts_models 目录对同一 DATABASE_URL 执行 diesel migration run" >&2
exit 1
}
echo "OK(已连库且存在 dbtask"
fi
echo "== 本机 htyts HTTP :$TS_PORT =="
if curl -sS --connect-timeout 2 "http://127.0.0.1:${TS_PORT}/api/v1/ts" | grep -q 'Task Server'; then
echo "OK -=Task Server=-"
else
echo "未响应或进程未起。起服: cd \"$HUIKE\" && ./scripts/moicen_start_huiwings_stack.sh(需先有 htyts/.env;或单独 cd htyts && ./start.sh" >&2
echo "排障: tail -n 80 \"$HUIKE/htyts/htyts.nohup.log\"" >&2
exit 1
fi
echo "== 经域名(可选,需本机能解析 ts.moicen.com =="
if curl -sS --connect-timeout 5 -o /dev/null -w '%{http_code}\n' "https://ts.moicen.com/api/v2/ts/" 2>/dev/null | grep -q '^200$'; then
echo "OK https://ts.moicen.com/api/v2/ts/"
else
echo "跳过或失败(本机无公网 / 证书 / openresty 未 reload 时属正常)"
fi
echo "全部通过。"