138 lines
3.5 KiB
Bash
138 lines
3.5 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# 直播系统一键部署脚本
|
||
|
|
# 使用方法: ./deploy.sh 你的服务器公网IP
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# 颜色输出
|
||
|
|
RED='\033[0;31m'
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
NC='\033[0m'
|
||
|
|
|
||
|
|
echo -e "${GREEN}========================================${NC}"
|
||
|
|
echo -e "${GREEN} 直播系统一键部署脚本${NC}"
|
||
|
|
echo -e "${GREEN}========================================${NC}"
|
||
|
|
|
||
|
|
# 检查参数
|
||
|
|
if [ -z "$1" ]; then
|
||
|
|
echo -e "${YELLOW}请输入服务器公网IP:${NC}"
|
||
|
|
read SERVER_IP
|
||
|
|
else
|
||
|
|
SERVER_IP=$1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -z "$SERVER_IP" ]; then
|
||
|
|
echo -e "${RED}错误: 必须提供服务器公网IP${NC}"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo -e "${GREEN}服务器IP: ${SERVER_IP}${NC}"
|
||
|
|
|
||
|
|
# 检查 Docker 是否安装
|
||
|
|
if ! command -v docker &> /dev/null; then
|
||
|
|
echo -e "${YELLOW}Docker 未安装,正在安装...${NC}"
|
||
|
|
curl -fsSL https://get.docker.com | sh
|
||
|
|
systemctl start docker
|
||
|
|
systemctl enable docker
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 检查 docker-compose 是否安装
|
||
|
|
if ! command -v docker-compose &> /dev/null; then
|
||
|
|
echo -e "${YELLOW}Docker Compose 未安装,正在安装...${NC}"
|
||
|
|
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
|
|
chmod +x /usr/local/bin/docker-compose
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo -e "${GREEN}Docker 版本: $(docker --version)${NC}"
|
||
|
|
|
||
|
|
# 创建生产环境配置
|
||
|
|
echo -e "${GREEN}创建生产环境配置...${NC}"
|
||
|
|
|
||
|
|
cat > .env.production << EOF
|
||
|
|
NODE_ENV=production
|
||
|
|
PORT=3001
|
||
|
|
SRS_HOST=srs
|
||
|
|
SRS_RTMP_PORT=1935
|
||
|
|
SRS_HTTP_PORT=8080
|
||
|
|
SRS_API_PORT=1985
|
||
|
|
PUBLIC_HOST=${SERVER_IP}
|
||
|
|
EOF
|
||
|
|
|
||
|
|
# 更新 docker-compose 配置
|
||
|
|
cat > docker-compose.prod.yml << EOF
|
||
|
|
version: '3.8'
|
||
|
|
|
||
|
|
services:
|
||
|
|
srs:
|
||
|
|
image: ossrs/srs:5
|
||
|
|
container_name: srs-server
|
||
|
|
ports:
|
||
|
|
- "25002:1935"
|
||
|
|
- "25003:8080"
|
||
|
|
- "1985:1985"
|
||
|
|
volumes:
|
||
|
|
- ./docker/srs/srs.conf:/usr/local/srs/conf/srs.conf
|
||
|
|
restart: always
|
||
|
|
networks:
|
||
|
|
- live-network
|
||
|
|
|
||
|
|
api-server:
|
||
|
|
build:
|
||
|
|
context: .
|
||
|
|
dockerfile: Dockerfile
|
||
|
|
container_name: api-server
|
||
|
|
ports:
|
||
|
|
- "25001:3001"
|
||
|
|
environment:
|
||
|
|
- NODE_ENV=production
|
||
|
|
- PORT=3001
|
||
|
|
- SRS_HOST=srs
|
||
|
|
- SRS_RTMP_PORT=1935
|
||
|
|
- SRS_HTTP_PORT=8080
|
||
|
|
- PUBLIC_SRS_HOST=${SERVER_IP}
|
||
|
|
- PUBLIC_SRS_RTMP_PORT=25002
|
||
|
|
- PUBLIC_SRS_HTTP_PORT=25003
|
||
|
|
depends_on:
|
||
|
|
- srs
|
||
|
|
restart: always
|
||
|
|
networks:
|
||
|
|
- live-network
|
||
|
|
|
||
|
|
networks:
|
||
|
|
live-network:
|
||
|
|
driver: bridge
|
||
|
|
EOF
|
||
|
|
|
||
|
|
# 停止旧容器
|
||
|
|
echo -e "${GREEN}停止旧容器...${NC}"
|
||
|
|
docker-compose -f docker-compose.prod.yml down 2>/dev/null || true
|
||
|
|
|
||
|
|
# 构建并启动
|
||
|
|
echo -e "${GREEN}构建并启动服务...${NC}"
|
||
|
|
docker-compose -f docker-compose.prod.yml up -d --build
|
||
|
|
|
||
|
|
# 等待服务启动
|
||
|
|
echo -e "${YELLOW}等待服务启动...${NC}"
|
||
|
|
sleep 10
|
||
|
|
|
||
|
|
# 检查服务状态
|
||
|
|
echo -e "${GREEN}检查服务状态...${NC}"
|
||
|
|
docker-compose -f docker-compose.prod.yml ps
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo -e "${GREEN}========================================${NC}"
|
||
|
|
echo -e "${GREEN} 部署完成!${NC}"
|
||
|
|
echo -e "${GREEN}========================================${NC}"
|
||
|
|
echo ""
|
||
|
|
echo -e "API 服务地址: ${YELLOW}http://${SERVER_IP}:25001${NC}"
|
||
|
|
echo -e "RTMP 推流地址: ${YELLOW}rtmp://${SERVER_IP}:25002/live/房间流密钥${NC}"
|
||
|
|
echo -e "HLS 播放地址: ${YELLOW}http://${SERVER_IP}:25003/live/房间流密钥.m3u8${NC}"
|
||
|
|
echo -e "FLV 播放地址: ${YELLOW}http://${SERVER_IP}:25003/live/房间流密钥.flv${NC}"
|
||
|
|
echo ""
|
||
|
|
echo -e "${YELLOW}Android App 配置:${NC}"
|
||
|
|
echo -e "请将 build.gradle.kts 中的 API_BASE_URL_DEVICE 改为:"
|
||
|
|
echo -e "${GREEN}http://${SERVER_IP}:25001/api/${NC}"
|
||
|
|
echo ""
|