#!/bin/bash # 部署验证脚本 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' SERVER_IP=$(hostname -I | awk '{print $1}') PASS=0 FAIL=0 check_service() { local name=$1 local url=$2 echo -n "检查 ${name} ... " if curl -s -o /dev/null -w "%{http_code}" "${url}" | grep -q "200\|302\|401"; then echo -e "${GREEN}通过${NC}" ((PASS++)) else echo -e "${RED}失败${NC}" ((FAIL++)) fi } echo -e "${YELLOW}========================================${NC}" echo -e "${YELLOW} GoWVP + ZLMediaKit 部署验证 ${NC}" echo -e "${YELLOW}========================================${NC}" echo "服务器IP: ${SERVER_IP}" echo "" # 1. 检查 Docker 服务 echo -n "检查 Docker 服务 ... " if systemctl is-active docker >/dev/null 2>&1; then echo -e "${GREEN}通过${NC}" ((PASS++)) else echo -e "${RED}失败${NC}" ((FAIL++)) fi # 2. 检查容器运行状态 echo -n "检查 ZLMediaKit 容器 ... " if docker ps | grep -q zlmediakit; then echo -e "${GREEN}通过${NC}" ((PASS++)) else echo -e "${RED}失败${NC}" ((FAIL++)) fi echo -n "检查 GoWVP 容器 ... " if docker ps | grep -q gowvp; then echo -e "${GREEN}通过${NC}" ((PASS++)) else echo -e "${RED}失败${NC}" ((FAIL++)) fi # 3. 检查端口监听 echo -n "检查 HTTP 80 端口 ... " if netstat -tlnp 2>/dev/null | grep -q ":80 " || ss -tlnp 2>/dev/null | grep -q ":80 "; then echo -e "${GREEN}通过${NC}" ((PASS++)) else echo -e "${RED}失败${NC}" ((FAIL++)) fi echo -n "检查 GoWVP 15123 端口 ... " if netstat -tlnp 2>/dev/null | grep -q ":15123 " || ss -tlnp 2>/dev/null | grep -q ":15123 "; then echo -e "${GREEN}通过${NC}" ((PASS++)) else echo -e "${RED}失败${NC}" ((FAIL++)) fi # 4. HTTP API 测试 check_service "ZLMediaKit API" "http://${SERVER_IP}/index/api/getApiList" check_service "GoWVP Web界面" "http://${SERVER_IP}:15123" # 5. 检查日志是否有错误 echo -n "检查 ZLMediaKit 日志错误 ... " if docker logs zlmediakit 2>&1 | grep -qi "error\|fatal"; then echo -e "${YELLOW}警告: 发现错误日志${NC}" else echo -e "${GREEN}通过${NC}" ((PASS++)) fi echo "" echo -e "${YELLOW}========================================${NC}" echo -e "${GREEN} 验证完成: ${PASS} 通过, ${FAIL} 失败 ${NC}" echo -e "${YELLOW}========================================${NC}" if [ $FAIL -eq 0 ]; then echo -e "${GREEN}所有检查通过!部署成功!${NC}" exit 0 else echo -e "${RED}部分检查未通过,请查看上方详情${NC}" exit 1 fi