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
This commit is contained in:
Executable
+88
@@ -0,0 +1,88 @@
|
|||||||
|
#!/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 "== PostgreSQL(TS_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 "全部通过。"
|
||||||
@@ -40,7 +40,10 @@ fi
|
|||||||
|
|
||||||
REL=""
|
REL=""
|
||||||
# 有任一 release 可执行则全程加 --release(与旧机用 debug 时可改 REL 或先不 build --release)
|
# 有任一 release 可执行则全程加 --release(与旧机用 debug 时可改 REL 或先不 build --release)
|
||||||
if [ -f "$AUTH/target/release/htyuc" ] 2>/dev/null || [ -f "$HUIKE/target/release/htyws" ] 2>/dev/null; then
|
if [ -f "$AUTH/target/release/htyuc" ] 2>/dev/null \
|
||||||
|
|| [ -f "$HUIKE/target/release/htyws" ] 2>/dev/null \
|
||||||
|
|| [ -f "$HUIKE/target/release/htyts" ] 2>/dev/null \
|
||||||
|
|| [ -f "$HUIKE/target/release/htyproc" ] 2>/dev/null; then
|
||||||
REL=--release
|
REL=--release
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user