diff --git a/scripts/moicen_htyts_smoke.sh b/scripts/moicen_htyts_smoke.sh new file mode 100755 index 0000000..b900267 --- /dev/null +++ b/scripts/moicen_htyts_smoke.sh @@ -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 "全部通过。" diff --git a/scripts/moicen_start_huiwings_stack.sh b/scripts/moicen_start_huiwings_stack.sh index 43fe705..06d6e82 100755 --- a/scripts/moicen_start_huiwings_stack.sh +++ b/scripts/moicen_start_huiwings_stack.sh @@ -40,7 +40,10 @@ fi REL="" # 有任一 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 fi