Files
gangyan/scripts/backend-restart.sh
liuguancen 0c3a393d04 [运维] 接入内网 searxng + 清理启动脚本 + 修 log-trim 权限
搜索接口:

- duckduckgo_search.py / ZhipuSearchAPI.py 切换到内网 searxng (原 43.251.225.121 / 134.122.191.214 已失效)

启动脚本清理:

- 删除废弃 backend/ 目录 (与 chat_web_backend/ 编译产物 jar MD5 相同,仅是改名副本)

- 删除 start_all.sh 与 langchain-chat/{start,stop,stop_quick,shutdown_all,restart}.sh (被 scripts/*-restart.sh 覆盖)

- 删除 chat_web_backend/{start,test_mysql}.sh

修复:

- scripts/backend-restart.sh 对齐当前实际在跑的 chat_web_backend.jar (profile=dev)

- scripts/log-trim-daemon.sh 把 LOCK 移到 /tmp 按用户命名,修复非首次用户跑时的 Permission denied

新增:

- scripts/start-all.sh:一键启动入口,串联 mysql/redis/milvus/langchain/backend/frontend,含端口自检

- chat_web_backend/application-local.yml.archived:原 backend/ 下 yj profile 覆盖配置的归档备份

其他:

- .gitignore 忽略 scripts/pptist-deploy/PPTist/ (323M 第三方源码树)
2026-04-20 15:59:11 +08:00

65 lines
2.7 KiB
Bash
Executable File
Raw 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
# 须用 bash 执行;若误用 sh/dash 会自动改用 bash 再跑一遍
[ -n "${BASH_VERSION:-}" ] || exec /usr/bin/env bash "$0" ${1+"$@"}
# 重启 Java 后端 chat_web_backend.jar源码 mvn 编译产物profile=dev
# 日志gangyan/logs/backend.log
# 注backend/chat_web_yj.jar同一 jar 的改名副本)及其 application-local.yml 覆盖配置已于 2026-04-20 归档删除。
set -u
source "$(cd "$(dirname "$0")" && pwd)/common-restart.sh"
# 默认 backend.log若曾被 root 创建导致当前用户不可写,则改用同目录 backend-<用户>.log
LOG_FILE="$LOG_DIR/backend.log"
if ! ( umask 022; : >>"$LOG_FILE" ) 2>/dev/null; then
ALT="$LOG_DIR/backend-$(id -un).log"
if ( umask 022; : >>"$ALT" ) 2>/dev/null; then
LOG_FILE="$ALT"
log_tee "注意: $LOG_DIR/backend.log 不可写(多为 root 遗留),已改用 $LOG_FILE"
log_tee "修复后可统一回 backend.log: sudo chown $(id -un):$(id -gn) \"$LOG_DIR/backend.log\" 或 sudo rm -f \"$LOG_DIR/backend.log\""
else
mkdir -p "${HOME}/.gangyan/logs"
LOG_FILE="${HOME}/.gangyan/logs/backend-restart.log"
log_tee "注意: gangyan/logs 不可写Java 日志暂存: $LOG_FILE"
fi
fi
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"
BACKEND_DIR="$GANGYAN_ROOT/chat_web_backend"
JAR_REL="target/chat_web_backend.jar"
if [ ! -f "$BACKEND_DIR/$JAR_REL" ]; then
log_tee "错误: 未找到 $BACKEND_DIR/$JAR_REL。先执行 chat_web_backend/compile.sh 编译。"
exit 1
fi
log_tee "======== 停止 chat_web_backend.jar ========"
pkill -f "target/chat_web_backend.jar" 2>/dev/null && log_tee "已发送停止信号" || log_tee "未找到运行中的进程"
sleep 2
# 端口兜底(非 hawei 启的旧进程 lsof 可能看不到,用 ss 探测)
if ss -tln 2>/dev/null | grep -qE ':8099[[:space:]]'; then
log_tee "8099 仍被占用,再等 3 秒..."
sleep 3
fi
log_tee "======== 启动 chat_web_backend.jar (profile=dev) ========"
cd "$BACKEND_DIR"
nohup java -jar \
-Xms512m -Xmx2048m \
"$JAR_REL" \
--spring.profiles.active=dev >> "$LOG_FILE" 2>&1 &
STARTED_PID=$!
log_tee "已后台启动PID=$STARTED_PID"
log_tee "Java 标准输出/错误写入: $LOG_FILE"
sleep 3
if kill -0 "$STARTED_PID" 2>/dev/null; then
if ss -tln 2>/dev/null | grep -qE ':8099[[:space:]]'; then
log_tee "自检: 进程存活且 8099 已监听"
else
log_tee "自检: 进程存活,但 8099 尚未监听可能仍在启动10 秒后若仍无请 tail $LOG_FILE"
fi
else
log_tee "自检失败: 进程已退出。最近日志:"
tail -n 40 "$LOG_FILE" 2>/dev/null | while IFS= read -r line || [ -n "$line" ]; do log_line "$line"; done
exit 1
fi