270 lines
7.2 KiB
Bash
270 lines
7.2 KiB
Bash
|
|
#!/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 ""
|