Initial_commit_SecMPS_v2
This commit is contained in:
107
owl_zlmediakit/scripts/install-docker.sh
Normal file
107
owl_zlmediakit/scripts/install-docker.sh
Normal file
@@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
# Docker 离线安装脚本(ARM64)
|
||||
# 适用于统信UOS20 / 龙蜥 / 欧拉 / Debian ARM64
|
||||
|
||||
set -e
|
||||
|
||||
DOCKER_VERSION="27.5.1"
|
||||
COMPOSE_VERSION="2.29.1"
|
||||
INSTALL_DIR="/usr/bin"
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} Docker CE 离线安装脚本 (ARM64) ${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
|
||||
# 检查架构
|
||||
ARCH=$(uname -m)
|
||||
if [ "$ARCH" != "aarch64" ]; then
|
||||
echo -e "${RED}错误: 当前架构为 $ARCH,本脚本仅支持 aarch64 (ARM64)${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查root权限
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo -e "${RED}错误: 请使用 root 用户运行本脚本${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查安装包是否存在
|
||||
if [ ! -f "docker-${DOCKER_VERSION}.tgz" ]; then
|
||||
echo -e "${RED}错误: 未找到 docker-${DOCKER_VERSION}.tgz${NC}"
|
||||
echo "请确保安装包位于当前目录"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}[1/6] 正在解压 Docker 安装包...${NC}"
|
||||
tar -xzf "docker-${DOCKER_VERSION}.tgz"
|
||||
|
||||
echo -e "${YELLOW}[2/6] 正在复制可执行文件...${NC}"
|
||||
cp -p docker/* "${INSTALL_DIR}/"
|
||||
|
||||
# 安装 docker-compose
|
||||
if [ -f "docker-compose-linux-aarch64" ]; then
|
||||
echo -e "${YELLOW}[3/6] 正在安装 Docker Compose...${NC}"
|
||||
cp -p docker-compose-linux-aarch64 "${INSTALL_DIR}/docker-compose"
|
||||
chmod +x "${INSTALL_DIR}/docker-compose"
|
||||
else
|
||||
echo -e "${YELLOW}[3/6] 跳过 Docker Compose (未找到安装包)${NC}"
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}[4/6] 正在创建 systemd 服务...${NC}"
|
||||
cat > /etc/systemd/system/docker.service << 'EOF'
|
||||
[Unit]
|
||||
Description=Docker Application Container Engine
|
||||
Documentation=https://docs.docker.com
|
||||
After=network-online.target firewalld.service
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
ExecStart=/usr/bin/dockerd
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
LimitNOFILE=infinity
|
||||
LimitNPROC=infinity
|
||||
TimeoutStartSec=0
|
||||
Delegate=yes
|
||||
KillMode=process
|
||||
Restart=on-failure
|
||||
StartLimitBurst=3
|
||||
StartLimitInterval=60s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
echo -e "${YELLOW}[5/6] 正在启动 Docker 服务...${NC}"
|
||||
systemctl daemon-reload
|
||||
systemctl start docker
|
||||
systemctl enable docker
|
||||
|
||||
# 创建 docker 组
|
||||
if ! getent group docker > /dev/null 2>&1; then
|
||||
groupadd docker
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}[6/6] 验证安装...${NC}"
|
||||
if docker --version; then
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} Docker 安装成功! ${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
docker --version
|
||||
docker-compose --version 2>/dev/null || true
|
||||
else
|
||||
echo -e "${RED}Docker 安装可能失败,请检查日志${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -rf docker/
|
||||
|
||||
echo -e "${GREEN}安装完成!${NC}"
|
||||
echo -e "${YELLOW}提示: 如需非root用户使用docker,请执行: usermod -aG docker <用户名>${NC}"
|
||||
101
owl_zlmediakit/scripts/setup.sh
Normal file
101
owl_zlmediakit/scripts/setup.sh
Normal file
@@ -0,0 +1,101 @@
|
||||
#!/bin/bash
|
||||
# GoWVP + ZLMediaKit 一键部署脚本
|
||||
# 适用于统信UOS20 ARM64 离线环境
|
||||
|
||||
set -e
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
INSTALL_DIR="/opt/owl-zlmediakit"
|
||||
DATA_DIR="${INSTALL_DIR}/data"
|
||||
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} GoWVP + ZLMediaKit 部署脚本 ${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
|
||||
# 检查root权限
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo -e "${RED}错误: 请使用 root 用户运行${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查架构
|
||||
ARCH=$(uname -m)
|
||||
if [ "$ARCH" != "aarch64" ]; then
|
||||
echo -e "${RED}错误: 当前架构为 $ARCH,本脚本仅支持 aarch64${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 创建目录
|
||||
echo -e "${YELLOW}[1/6] 创建数据目录...${NC}"
|
||||
mkdir -p "${DATA_DIR}"/record
|
||||
mkdir -p "${DATA_DIR}"/log
|
||||
mkdir -p "${DATA_DIR}"/gowvp-configs
|
||||
mkdir -p "${DATA_DIR}"/snap
|
||||
|
||||
# 复制配置文件
|
||||
echo -e "${YELLOW}[2/6] 复制配置文件...${NC}"
|
||||
cp configs/zlm-config.ini "${DATA_DIR}/"
|
||||
cp configs/docker-compose.yml "${INSTALL_DIR}/"
|
||||
|
||||
# 加载Docker镜像
|
||||
echo -e "${YELLOW}[3/6] 加载 Docker 镜像...${NC}"
|
||||
if [ -f "docker-images/zlmediakit-master-arm64.tar" ]; then
|
||||
docker load -i docker-images/zlmediakit-master-arm64.tar
|
||||
echo -e "${GREEN} ✓ ZLMediaKit 镜像已加载${NC}"
|
||||
else
|
||||
echo -e "${RED} ✗ 未找到 ZLMediaKit 镜像文件${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f "docker-images/gowvp-latest-arm64.tar" ]; then
|
||||
docker load -i docker-images/gowvp-latest-arm64.tar
|
||||
echo -e "${GREEN} ✓ GoWVP 镜像已加载${NC}"
|
||||
else
|
||||
echo -e "${RED} ✗ 未找到 GoWVP 镜像文件${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 启动服务
|
||||
echo -e "${YELLOW}[4/6] 启动服务...${NC}"
|
||||
cd "${INSTALL_DIR}"
|
||||
docker-compose up -d
|
||||
|
||||
# 等待服务启动
|
||||
echo -e "${YELLOW}[5/6] 等待服务启动 (约30秒)...${NC}"
|
||||
sleep 10
|
||||
echo -e "${YELLOW} 继续等待...${NC}"
|
||||
sleep 10
|
||||
echo -e "${YELLOW} 即将完成...${NC}"
|
||||
sleep 10
|
||||
|
||||
# 验证服务
|
||||
echo -e "${YELLOW}[6/6] 验证服务状态...${NC}"
|
||||
if docker ps | grep -q zlmediakit; then
|
||||
echo -e "${GREEN} ✓ ZLMediaKit 容器正在运行${NC}"
|
||||
else
|
||||
echo -e "${RED} ✗ ZLMediaKit 容器未运行${NC}"
|
||||
fi
|
||||
|
||||
if docker ps | grep -q gowvp; then
|
||||
echo -e "${GREEN} ✓ GoWVP 容器正在运行${NC}"
|
||||
else
|
||||
echo -e "${RED} ✗ GoWVP 容器未运行${NC}"
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} 部署完成! ${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}访问地址:${NC}"
|
||||
echo -e " ZLMediaKit: http://<服务器IP>"
|
||||
echo -e " GoWVP管理界面: http://<服务器IP>:15123"
|
||||
echo ""
|
||||
echo -e "${YELLOW}常用命令:${NC}"
|
||||
echo -e " 查看日志: docker logs -f zlmediakit"
|
||||
echo -e " 查看日志: docker logs -f gowvp"
|
||||
echo -e " 停止服务: docker-compose down"
|
||||
echo -e " 重启服务: docker-compose restart"
|
||||
104
owl_zlmediakit/scripts/verify.sh
Normal file
104
owl_zlmediakit/scripts/verify.sh
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user