部署流程

This commit is contained in:
xiao12feng8 2025-12-30 17:28:20 +08:00
parent c37cf4884b
commit a121ec6572
8 changed files with 767 additions and 0 deletions

0
deploy-commands.txt Normal file
View File

79
deploy-to-server.bat Normal file
View File

@ -0,0 +1,79 @@
@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion
REM ============================================
REM 直播系统一键部署脚本 (Windows版)
REM 服务器地址: 1.15.149.240
REM ============================================
set SERVER_IP=1.15.149.240
set SERVER_USER=root
set DEPLOY_PATH=/opt/zhibo
echo ==========================================
echo 直播系统部署脚本 (Windows版)
echo 目标服务器: %SERVER_IP%
echo ==========================================
echo.
REM 检查scp和ssh命令
where scp >nul 2>&1
if %errorlevel% neq 0 (
echo 错误: 未找到scp命令
echo 请安装OpenSSH客户端或使用Git Bash运行deploy-to-server.sh
pause
exit /b 1
)
echo [1/6] 测试SSH连接...
ssh -o ConnectTimeout=10 %SERVER_USER%@%SERVER_IP% "echo SSH连接成功"
if %errorlevel% neq 0 (
echo 错误: 无法连接到服务器
pause
exit /b 1
)
echo.
echo [2/6] 创建服务器目录结构...
ssh %SERVER_USER%@%SERVER_IP% "mkdir -p /opt/zhibo/admin-api /opt/zhibo/front-api /opt/zhibo/admin-web /opt/zhibo/logs /opt/zhibo/scripts"
echo.
echo [3/6] 上传后端JAR包...
echo - 上传 Admin API...
scp Zhibo/zhibo-h/crmeb-admin/target/Crmeb-admin.jar %SERVER_USER%@%SERVER_IP%:/opt/zhibo/admin-api/
echo - 上传 Front API...
scp Zhibo/zhibo-h/crmeb-front/target/Crmeb-front.jar %SERVER_USER%@%SERVER_IP%:/opt/zhibo/front-api/
echo.
echo [4/6] 上传前端管理界面...
scp -r Zhibo/admin/dist/* %SERVER_USER%@%SERVER_IP%:/opt/zhibo/admin-web/
echo.
echo [5/6] 创建服务启动脚本...
ssh %SERVER_USER%@%SERVER_IP% "cat > /opt/zhibo/scripts/start-admin-api.sh" < server-scripts/start-admin-api.sh
ssh %SERVER_USER%@%SERVER_IP% "cat > /opt/zhibo/scripts/start-front-api.sh" < server-scripts/start-front-api.sh
ssh %SERVER_USER%@%SERVER_IP% "chmod +x /opt/zhibo/scripts/*.sh"
echo.
echo [6/6] 上传Nginx配置...
scp server-scripts/zhibo.nginx.conf %SERVER_USER%@%SERVER_IP%:/etc/nginx/conf.d/zhibo.conf
ssh %SERVER_USER%@%SERVER_IP% "nginx -t && systemctl reload nginx"
echo.
echo ==========================================
echo 部署完成!
echo ==========================================
echo.
echo 请在服务器上执行以下命令启动服务:
echo ssh %SERVER_USER%@%SERVER_IP%
echo cd /opt/zhibo/scripts
echo ./start-all.sh
echo.
echo 服务访问地址:
echo - 管理后台: http://%SERVER_IP%
echo - Admin API: http://%SERVER_IP%:30001
echo - Front API: http://%SERVER_IP%:8081
echo.
pause

269
deploy-to-server.sh Normal file
View File

@ -0,0 +1,269 @@
#!/bin/bash
# ============================================
# 直播系统一键部署脚本
# 服务器地址: 1.15.149.240
# ============================================
set -e
# 配置变量
SERVER_IP="1.15.149.240"
SERVER_USER="root"
DEPLOY_PATH="/opt/zhibo"
ADMIN_API_PORT=30001
FRONT_API_PORT=8081
echo "=========================================="
echo " 直播系统部署脚本"
echo " 目标服务器: $SERVER_IP"
echo "=========================================="
# 检查SSH连接
echo ""
echo "[1/6] 检查SSH连接..."
ssh -o ConnectTimeout=10 ${SERVER_USER}@${SERVER_IP} "echo 'SSH连接成功'" || {
echo "错误: 无法连接到服务器 ${SERVER_IP}"
echo "请确保:"
echo " 1. 服务器IP正确"
echo " 2. SSH密钥已配置或准备好密码"
exit 1
}
# 在服务器上创建目录结构
echo ""
echo "[2/6] 创建服务器目录结构..."
ssh ${SERVER_USER}@${SERVER_IP} << 'ENDSSH'
mkdir -p /opt/zhibo/admin-api
mkdir -p /opt/zhibo/front-api
mkdir -p /opt/zhibo/admin-web
mkdir -p /opt/zhibo/logs
mkdir -p /opt/zhibo/scripts
echo "目录创建完成"
ENDSSH
# 上传后端JAR包
echo ""
echo "[3/6] 上传后端JAR包..."
echo " - 上传 Admin API (Crmeb-admin.jar)..."
scp Zhibo/zhibo-h/crmeb-admin/target/Crmeb-admin.jar ${SERVER_USER}@${SERVER_IP}:/opt/zhibo/admin-api/
echo " - 上传 Front API (Crmeb-front.jar)..."
scp Zhibo/zhibo-h/crmeb-front/target/Crmeb-front.jar ${SERVER_USER}@${SERVER_IP}:/opt/zhibo/front-api/
# 上传前端文件
echo ""
echo "[4/6] 上传前端管理界面..."
scp -r Zhibo/admin/dist/* ${SERVER_USER}@${SERVER_IP}:/opt/zhibo/admin-web/
# 创建启动脚本
echo ""
echo "[5/6] 创建服务启动脚本..."
ssh ${SERVER_USER}@${SERVER_IP} << 'ENDSSH'
# 创建Admin API启动脚本
cat > /opt/zhibo/scripts/start-admin-api.sh << 'EOF'
#!/bin/bash
APP_NAME="Crmeb-admin"
APP_PATH="/opt/zhibo/admin-api"
LOG_PATH="/opt/zhibo/logs"
JAR_FILE="${APP_PATH}/${APP_NAME}.jar"
# 停止旧进程
pid=$(ps -ef | grep "${APP_NAME}.jar" | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
echo "停止旧进程: $pid"
kill -9 $pid
sleep 2
fi
# 启动新进程
if [ -f "$JAR_FILE" ]; then
echo "启动 ${APP_NAME}..."
nohup java -Xms512m -Xmx1024m -jar $JAR_FILE \
--spring.redis.host=127.0.0.1 \
> ${LOG_PATH}/admin-api.log 2>&1 &
echo "Admin API 启动成功,端口: 30001"
else
echo "错误: JAR文件不存在: $JAR_FILE"
exit 1
fi
EOF
# 创建Front API启动脚本
cat > /opt/zhibo/scripts/start-front-api.sh << 'EOF'
#!/bin/bash
APP_NAME="Crmeb-front"
APP_PATH="/opt/zhibo/front-api"
LOG_PATH="/opt/zhibo/logs"
JAR_FILE="${APP_PATH}/${APP_NAME}.jar"
# 停止旧进程
pid=$(ps -ef | grep "${APP_NAME}.jar" | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
echo "停止旧进程: $pid"
kill -9 $pid
sleep 2
fi
# 启动新进程
if [ -f "$JAR_FILE" ]; then
echo "启动 ${APP_NAME}..."
nohup java -Xms512m -Xmx1024m -jar $JAR_FILE \
--spring.redis.host=127.0.0.1 \
> ${LOG_PATH}/front-api.log 2>&1 &
echo "Front API 启动成功,端口: 8081"
else
echo "错误: JAR文件不存在: $JAR_FILE"
exit 1
fi
EOF
# 创建停止脚本
cat > /opt/zhibo/scripts/stop-all.sh << 'EOF'
#!/bin/bash
echo "停止所有服务..."
pkill -f "Crmeb-admin.jar" 2>/dev/null && echo "Admin API 已停止" || echo "Admin API 未运行"
pkill -f "Crmeb-front.jar" 2>/dev/null && echo "Front API 已停止" || echo "Front API 未运行"
echo "完成"
EOF
# 创建一键启动脚本
cat > /opt/zhibo/scripts/start-all.sh << 'EOF'
#!/bin/bash
echo "=========================================="
echo " 启动所有直播系统服务"
echo "=========================================="
cd /opt/zhibo/scripts
./start-admin-api.sh
sleep 5
./start-front-api.sh
echo ""
echo "所有服务启动完成!"
echo " - Admin API: http://localhost:30001"
echo " - Front API: http://localhost:8081"
EOF
# 创建状态检查脚本
cat > /opt/zhibo/scripts/status.sh << 'EOF'
#!/bin/bash
echo "=========================================="
echo " 服务状态检查"
echo "=========================================="
echo ""
echo "Admin API (端口 30001):"
if pgrep -f "Crmeb-admin.jar" > /dev/null; then
echo " 状态: 运行中"
pid=$(pgrep -f "Crmeb-admin.jar")
echo " PID: $pid"
else
echo " 状态: 未运行"
fi
echo ""
echo "Front API (端口 8081):"
if pgrep -f "Crmeb-front.jar" > /dev/null; then
echo " 状态: 运行中"
pid=$(pgrep -f "Crmeb-front.jar")
echo " PID: $pid"
else
echo " 状态: 未运行"
fi
echo ""
echo "端口监听状态:"
netstat -tlnp 2>/dev/null | grep -E "30001|8081" || ss -tlnp | grep -E "30001|8081"
EOF
chmod +x /opt/zhibo/scripts/*.sh
echo "启动脚本创建完成"
ENDSSH
# 创建Nginx配置
echo ""
echo "[6/6] 配置Nginx..."
ssh ${SERVER_USER}@${SERVER_IP} << 'ENDSSH'
# 检查Nginx是否安装
if ! command -v nginx &> /dev/null; then
echo "Nginx未安装正在安装..."
apt-get update && apt-get install -y nginx || yum install -y nginx
fi
# 创建Nginx配置
cat > /etc/nginx/conf.d/zhibo.conf << 'EOF'
# 直播系统 - 管理后台前端
server {
listen 80;
server_name admin.zhibo.local; # 可以改成你的域名
root /opt/zhibo/admin-web;
index index.html;
# 前端静态文件
location / {
try_files $uri $uri/ /index.html;
}
# 代理Admin API
location /api/admin/ {
proxy_pass http://127.0.0.1:30001/api/admin/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 代理公共API
location /api/public/ {
proxy_pass http://127.0.0.1:30001/api/public/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# 直播系统 - 前端API (供APP调用)
server {
listen 8080;
server_name _;
# 代理Front API
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
EOF
# 测试Nginx配置
nginx -t && systemctl reload nginx
echo "Nginx配置完成"
ENDSSH
echo ""
echo "=========================================="
echo " 部署完成!"
echo "=========================================="
echo ""
echo "接下来请在服务器上执行以下命令启动服务:"
echo ""
echo " ssh ${SERVER_USER}@${SERVER_IP}"
echo " cd /opt/zhibo/scripts"
echo " ./start-all.sh"
echo ""
echo "服务访问地址:"
echo " - 管理后台: http://${SERVER_IP}"
echo " - Admin API: http://${SERVER_IP}:30001"
echo " - Front API: http://${SERVER_IP}:8081 (或通过Nginx 8080端口)"
echo ""
echo "常用命令:"
echo " - 启动所有服务: /opt/zhibo/scripts/start-all.sh"
echo " - 停止所有服务: /opt/zhibo/scripts/stop-all.sh"
echo " - 查看服务状态: /opt/zhibo/scripts/status.sh"
echo " - 查看日志: tail -f /opt/zhibo/logs/admin-api.log"
echo " tail -f /opt/zhibo/logs/front-api.log"
echo ""

BIN
live-streaming.zip Normal file

Binary file not shown.

View File

@ -0,0 +1,25 @@
# ==========================================
# 直播服务 Docker 环境配置
# 复制此文件为 .env 并修改配置
# ==========================================
# ========== 服务器公网地址 ==========
# 你的服务器公网 IP
PUBLIC_SRS_HOST=1.15.149.240
# ========== 端口配置 ==========
# API 服务端口
API_EXPOSE_PORT=25001
# SRS RTMP 端口(推流用)
SRS_RTMP_EXPOSE_PORT=25002
# SRS HTTP 端口(拉流用)
SRS_HTTP_EXPOSE_PORT=25003
# SRS API 端口
SRS_API_EXPOSE_PORT=1985
# ========== 公网端口(如果使用端口映射,修改这里)==========
PUBLIC_SRS_RTMP_PORT=25002
PUBLIC_SRS_HTTP_PORT=25003

46
live-streaming/deploy.bat Normal file
View File

@ -0,0 +1,46 @@
@echo off
chcp 65001 >nul
REM ==========================================
REM 直播服务 Docker 部署脚本 (Windows)
REM ==========================================
echo ==========================================
echo 直播服务 Docker 部署
echo ==========================================
REM 检查 .env 文件
if not exist ".env" (
echo ❌ 错误: 未找到 .env 文件
echo 请复制 .env.example 为 .env 并修改配置
echo copy .env.example .env
pause
exit /b 1
)
echo.
echo 🔨 构建镜像...
docker-compose build
echo.
echo 🚀 启动服务...
docker-compose up -d
echo.
echo ✅ 部署完成!
echo.
echo ==========================================
echo 服务状态
echo ==========================================
docker-compose ps
echo.
echo ==========================================
echo 常用命令
echo ==========================================
echo 查看日志: docker-compose logs -f
echo 停止服务: docker-compose down
echo 重启服务: docker-compose restart
echo 查看状态: docker-compose ps
echo.
pause

70
live-streaming/deploy.sh Normal file
View File

@ -0,0 +1,70 @@
#!/bin/bash
# ==========================================
# 直播服务 Docker 部署脚本
# ==========================================
set -e
echo "=========================================="
echo " 直播服务 Docker 部署"
echo "=========================================="
# 检查 .env 文件
if [ ! -f ".env" ]; then
echo "❌ 错误: 未找到 .env 文件"
echo "请复制 .env.example 为 .env 并修改配置"
echo " cp .env.example .env"
echo " nano .env"
exit 1
fi
# 加载环境变量
source .env
echo ""
echo "📋 当前配置:"
echo " - 公网地址: ${PUBLIC_SRS_HOST:-未设置}"
echo " - API 端口: ${API_EXPOSE_PORT:-25001}"
echo " - RTMP 端口: ${SRS_RTMP_EXPOSE_PORT:-25002}"
echo " - HTTP 端口: ${SRS_HTTP_EXPOSE_PORT:-25003}"
echo ""
# 确认部署
read -p "是否继续部署? (y/n): " confirm
if [ "$confirm" != "y" ]; then
echo "已取消部署"
exit 0
fi
echo ""
echo "🔨 构建镜像..."
docker-compose build
echo ""
echo "🚀 启动服务..."
docker-compose up -d
echo ""
echo "✅ 部署完成!"
echo ""
echo "=========================================="
echo " 服务状态"
echo "=========================================="
docker-compose ps
echo ""
echo "=========================================="
echo " 访问地址"
echo "=========================================="
echo " API 服务: http://${PUBLIC_SRS_HOST:-localhost}:${API_EXPOSE_PORT:-25001}"
echo " RTMP 推流: rtmp://${PUBLIC_SRS_HOST:-localhost}:${SRS_RTMP_EXPOSE_PORT:-25002}/live/[streamKey]"
echo " HTTP 拉流: http://${PUBLIC_SRS_HOST:-localhost}:${SRS_HTTP_EXPOSE_PORT:-25003}/live/[streamKey].flv"
echo ""
echo "=========================================="
echo " 常用命令"
echo "=========================================="
echo " 查看日志: docker-compose logs -f"
echo " 停止服务: docker-compose down"
echo " 重启服务: docker-compose restart"
echo " 查看状态: docker-compose ps"
echo ""

View File

@ -0,0 +1,278 @@
# 直播系统部署指南
## 服务器信息
- **IP地址**: 1.15.149.240
- **部署目录**: /opt/zhibo
## 需要部署的服务
| 服务 | 端口 | 说明 |
|------|------|------|
| Admin API | 30001 | 管理后台API |
| Front API | 8081 | 前端/APP API |
| Admin Web | 80 | 管理后台界面 |
---
## 第一步:上传文件到服务器
### 方法1使用SCP命令推荐
打开PowerShell或CMD在项目根目录执行
```powershell
# 1. 创建服务器目录
ssh root@1.15.149.240 "mkdir -p /opt/zhibo/{admin-api,front-api,admin-web,logs,scripts}"
# 2. 上传Admin API JAR包
scp Zhibo/zhibo-h/crmeb-admin/target/Crmeb-admin.jar root@1.15.149.240:/opt/zhibo/admin-api/
# 3. 上传Front API JAR包
scp Zhibo/zhibo-h/crmeb-front/target/Crmeb-front.jar root@1.15.149.240:/opt/zhibo/front-api/
# 4. 上传前端文件
scp -r Zhibo/admin/dist/* root@1.15.149.240:/opt/zhibo/admin-web/
```
### 方法2使用SFTP工具
使用FileZilla、WinSCP等工具连接服务器手动上传
- `Zhibo/zhibo-h/crmeb-admin/target/Crmeb-admin.jar``/opt/zhibo/admin-api/`
- `Zhibo/zhibo-h/crmeb-front/target/Crmeb-front.jar``/opt/zhibo/front-api/`
- `Zhibo/admin/dist/` 目录下所有文件 → `/opt/zhibo/admin-web/`
---
## 第二步SSH登录服务器配置
```bash
ssh root@1.15.149.240
```
### 2.1 创建启动脚本
```bash
# 创建Admin API启动脚本
cat > /opt/zhibo/scripts/start-admin-api.sh << 'EOF'
#!/bin/bash
APP_NAME="Crmeb-admin"
JAR_FILE="/opt/zhibo/admin-api/${APP_NAME}.jar"
LOG_FILE="/opt/zhibo/logs/admin-api.log"
# 停止旧进程
pid=$(pgrep -f "${APP_NAME}.jar")
[ -n "$pid" ] && kill -9 $pid && echo "停止旧进程: $pid" && sleep 2
# 启动
nohup java -Xms512m -Xmx1024m -jar $JAR_FILE \
--spring.redis.host=127.0.0.1 \
> $LOG_FILE 2>&1 &
echo "Admin API 启动成功,端口: 30001"
EOF
# 创建Front API启动脚本
cat > /opt/zhibo/scripts/start-front-api.sh << 'EOF'
#!/bin/bash
APP_NAME="Crmeb-front"
JAR_FILE="/opt/zhibo/front-api/${APP_NAME}.jar"
LOG_FILE="/opt/zhibo/logs/front-api.log"
# 停止旧进程
pid=$(pgrep -f "${APP_NAME}.jar")
[ -n "$pid" ] && kill -9 $pid && echo "停止旧进程: $pid" && sleep 2
# 启动
nohup java -Xms512m -Xmx1024m -jar $JAR_FILE \
--spring.redis.host=127.0.0.1 \
> $LOG_FILE 2>&1 &
echo "Front API 启动成功,端口: 8081"
EOF
# 创建一键启动脚本
cat > /opt/zhibo/scripts/start-all.sh << 'EOF'
#!/bin/bash
echo "启动所有服务..."
/opt/zhibo/scripts/start-admin-api.sh
sleep 5
/opt/zhibo/scripts/start-front-api.sh
echo "完成!"
EOF
# 创建停止脚本
cat > /opt/zhibo/scripts/stop-all.sh << 'EOF'
#!/bin/bash
pkill -f "Crmeb-admin.jar" && echo "Admin API 已停止"
pkill -f "Crmeb-front.jar" && echo "Front API 已停止"
EOF
# 赋予执行权限
chmod +x /opt/zhibo/scripts/*.sh
```
### 2.2 配置Nginx
```bash
# 创建Nginx配置
cat > /etc/nginx/conf.d/zhibo.conf << 'EOF'
# 管理后台
server {
listen 80;
server_name _;
root /opt/zhibo/admin-web;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
# Admin API代理
location /api/admin/ {
proxy_pass http://127.0.0.1:30001/api/admin/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /api/public/ {
proxy_pass http://127.0.0.1:30001/api/public/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# Front API (供APP调用)
server {
listen 8080;
server_name _;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
EOF
# 测试并重载Nginx
nginx -t && systemctl reload nginx
```
---
## 第三步:启动服务
```bash
# 启动所有服务
/opt/zhibo/scripts/start-all.sh
# 查看日志
tail -f /opt/zhibo/logs/admin-api.log
tail -f /opt/zhibo/logs/front-api.log
# 检查端口
netstat -tlnp | grep -E "30001|8081"
```
---
## 第四步:验证部署
### 检查服务状态
```bash
# 检查进程
ps aux | grep -E "Crmeb-admin|Crmeb-front"
# 检查端口
ss -tlnp | grep -E "30001|8081|80|8080"
```
### 测试接口
```bash
# 测试Admin API
curl http://localhost:30001/api/public/version
# 测试Front API
curl http://localhost:8081/api/front/index
```
---
## 访问地址
| 服务 | 地址 |
|------|------|
| 管理后台 | http://1.15.149.240 |
| Admin API | http://1.15.149.240:30001 |
| Front API | http://1.15.149.240:8081 |
| Front API (Nginx) | http://1.15.149.240:8080 |
---
## 常用命令
```bash
# 启动所有服务
/opt/zhibo/scripts/start-all.sh
# 停止所有服务
/opt/zhibo/scripts/stop-all.sh
# 单独启动Admin API
/opt/zhibo/scripts/start-admin-api.sh
# 单独启动Front API
/opt/zhibo/scripts/start-front-api.sh
# 查看日志
tail -100f /opt/zhibo/logs/admin-api.log
tail -100f /opt/zhibo/logs/front-api.log
```
---
## APP配置
部署完成后需要修改Android APP的API地址
文件:`android-app/app/src/main/java/com/example/livestreaming/net/ApiConfig.java`
```java
public static final String BASE_URL = "http://1.15.149.240:8081/";
```
然后重新编译APK。
---
## 故障排查
### 服务启动失败
```bash
# 查看详细日志
cat /opt/zhibo/logs/admin-api.log
cat /opt/zhibo/logs/front-api.log
# 检查Java版本
java -version # 需要JDK 1.8
# 检查Redis是否运行
redis-cli ping
```
### 端口被占用
```bash
# 查看端口占用
lsof -i :30001
lsof -i :8081
# 杀掉占用进程
kill -9 <PID>
```