docs: 新增 README + 更新 Deploy.md + 整理 .gitignore

- 新增 README.md 完整项目概览(架构、功能、快速开始)
- 更新 Deploy.md 修正过时的服务状态和端口信息
- 整理 .gitignore 补充缺失规则并移除无效项

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-22 19:59:47 +08:00
parent e83f28d646
commit 8c19b79a02
5 changed files with 349 additions and 328 deletions
-242
View File
@@ -1,242 +0,0 @@
#!/bin/bash
# ==================== 配置 ====================
ROOT_HOST="${CHROMIUM_MANAGER_HOST:-127.0.0.1}"
ROOT_PORT="${CHROMIUM_MANAGER_PORT:-19520}"
BASE_URL="http://$ROOT_HOST:$ROOT_PORT"
# ==================== 颜色 ====================
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'
# ==================== 帮助 ====================
show_help() {
cat << EOF
${CYAN}Chromium 调试管理器${NC}
用法: ./chromium_debugging.sh <命令> [选项]
${GREEN}命令:${NC}
start 启动 Chromium(带 GUI,显示在 root 桌面)
stop 停止 Chromium
restart 重启 Chromium
status 查看 Chromium 状态
debug-url 获取 WebSocket 调试地址(给 VS Code 插件用)
log 查看 Chromium 日志(默认最近 50 行)
log -f 实时跟踪日志
help 显示此帮助
${YELLOW}环境变量:${NC}
CHROMIUM_MANAGER_HOST 管理服务地址(默认 127.0.0.1)
CHROMIUM_MANAGER_PORT 管理服务端口(默认 19520)
${CYAN}示例:${NC}
./chromium_debugging.sh start # 启动 Chromium
./chromium_debugging.sh status # 查看状态
./chromium_debugging.sh debug-url # 获取调试地址
EOF
}
# ==================== API 调用 ====================
call_api() {
local ENDPOINT="$1"
local RESULT
local HTTP_CODE
RESULT=$(curl -s -w "\n%{http_code}" -X GET "$BASE_URL$ENDPOINT" 2>/dev/null)
HTTP_CODE=$(echo "$RESULT" | tail -1)
RESULT=$(echo "$RESULT" | sed '$d')
if [ "$HTTP_CODE" != "200" ]; then
echo "{\"status\":\"error\",\"message\":\"连接管理服务失败 ($HTTP_CODE),请确认 root 上已运行 chromium-manager.sh\"}"
return 1
fi
echo "$RESULT"
return 0
}
# ==================== 命令实现 ====================
cmd_start() {
echo -e "${YELLOW}🚀 请求启动 Chromium...${NC}"
local RESULT=$(call_api "/start")
local STATUS=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('status','unknown'))" 2>/dev/null)
if [ "$STATUS" = "ok" ]; then
local PID=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('pid',''))" 2>/dev/null)
echo -e "${GREEN}✅ Chromium 已启动 (PID: $PID)${NC}"
echo -e " 调试地址: ${CYAN}http://$ROOT_HOST:9222${NC}"
elif [ "$STATUS" = "error" ]; then
local MSG=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('message','未知错误'))" 2>/dev/null)
echo -e "${RED}$MSG${NC}"
else
echo -e "${RED}❌ 请求失败${NC}"
echo "$RESULT"
fi
}
cmd_stop() {
echo -e "${YELLOW}🛑 请求停止 Chromium...${NC}"
local RESULT=$(call_api "/stop")
local STATUS=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('status','unknown'))" 2>/dev/null)
if [ "$STATUS" = "ok" ]; then
echo -e "${GREEN}✅ Chromium 已停止${NC}"
else
local MSG=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('message','未知错误'))" 2>/dev/null)
echo -e "${YELLOW}⚠️ $MSG${NC}"
fi
}
cmd_restart() {
echo -e "${YELLOW}🔄 请求重启 Chromium...${NC}"
local RESULT=$(call_api "/restart")
local STATUS=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('status','unknown'))" 2>/dev/null)
if [ "$STATUS" = "ok" ]; then
local PID=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('pid',''))" 2>/dev/null)
echo -e "${GREEN}✅ Chromium 已重启 (PID: $PID)${NC}"
else
local MSG=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('message','未知错误'))" 2>/dev/null)
echo -e "${RED}$MSG${NC}"
fi
}
cmd_status() {
local RESULT=$(call_api "/status")
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 无法连接管理服务${NC}"
return 1
fi
local STATUS=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('status','unknown'))" 2>/dev/null)
if [ "$STATUS" = "running" ]; then
local PID=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('pid',''))" 2>/dev/null)
echo -e "${GREEN}✅ Chromium 运行中${NC}"
echo -e " PID: ${CYAN}$PID${NC}"
echo -e " 调试端口: ${CYAN}$ROOT_HOST:9222${NC}"
local BROWSER=$(echo "$RESULT" | python3 -c "
import sys,json
data = json.load(sys.stdin)
info = data.get('browser_info', {})
if isinstance(info, dict):
print(f\" 浏览器: {info.get('Browser', '未知')}\")
ua = info.get('User-Agent', '')
if ua:
print(f\" 用户代理: {ua[:80]}...\")
" 2>/dev/null)
echo -e "$BROWSER"
else
echo -e "${YELLOW}⏹️ Chromium 未运行${NC}"
fi
}
cmd_debug_url() {
local RESULT=$(call_api "/status")
if [ $? -ne 0 ]; then return 1; fi
local STATUS=$(echo "$RESULT" | python3 -c "import sys,json;print(json.load(sys.stdin).get('status','unknown'))" 2>/dev/null)
if [ "$STATUS" != "running" ]; then
echo -e "${RED}❌ Chromium 未运行,请先执行 start${NC}"
return 1
fi
# 获取 WebSocket 调试地址
local WS_URL=$(curl -s "http://$ROOT_HOST:9222/json/version" 2>/dev/null | python3 -c "
import sys,json
try:
data = json.load(sys.stdin)
print(data.get('webSocketDebuggerUrl', ''))
except:
print('')
" 2>/dev/null)
local PAGE_WS=$(curl -s "http://$ROOT_HOST:9222/json" 2>/dev/null | python3 -c "
import sys,json
try:
pages = json.load(sys.stdin)
if pages:
print(pages[0].get('webSocketDebuggerUrl', ''))
else:
print('')
except:
print('')
" 2>/dev/null)
if [ -n "$WS_URL" ]; then
echo -e "${GREEN}🔗 调试地址:${NC}"
echo -e " 浏览器: ${CYAN}$WS_URL${NC}"
if [ -n "$PAGE_WS" ]; then
echo -e " 当前页面: ${CYAN}$PAGE_WS${NC}"
fi
echo ""
echo -e "${YELLOW}💡 VS Code 插件配置示例:${NC}"
echo " {"
echo " \"type\": \"chrome\","
echo " \"request\": \"attach\","
echo " \"name\": \"Attach to Chromium\","
echo " \"port\": 9222,"
echo " \"host\": \"$ROOT_HOST\""
echo " }"
else
echo -e "${RED}❌ 无法获取调试地址${NC}"
fi
}
cmd_log() {
# 先看看管理服务能不能返回日志路径
local LOG_PATH=$(curl -s "http://$ROOT_HOST:9222/json/version" 2>/dev/null | python3 -c "
import sys,json
print('ok')
" 2>/dev/null)
if [ $? -ne 0 ] || [ -z "$LOG_PATH" ]; then
echo -e "${YELLOW}⚠️ 无法直接访问日志文件${NC}"
echo " root 上的日志目录: ~/debug/logs/chromium/"
echo " 可以在 root 上用 cat/tail 查看"
return 1
fi
# 通过 Chromium 的 API 简单确认它在运行
echo -e "${YELLOW}📄 日志文件在 root 上: ~/debug/logs/chromium/${NC}"
echo -e " 请在 root 终端查看,或使用 ssh root@localhost 'tail -f ~/debug/logs/chromium/chromium-*.log'"
}
# ==================== 主入口 ====================
case "${1:-help}" in
start)
cmd_start
;;
stop)
cmd_stop
;;
restart)
cmd_restart
;;
status)
cmd_status
;;
debug-url|debug_url|url)
cmd_debug_url
;;
log)
shift
cmd_log "$@"
;;
help|--help|-h)
show_help
;;
*)
echo -e "${RED}未知命令: $1${NC}"
show_help
exit 1
;;
esac