kindergarten_java/deploy.sh

162 lines
4.3 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
#===============================================================================
# 少儿智慧阅读 - 一键部署到宝塔面板
#
# 使用方法:
# ./deploy.sh your-server-ip
# 或
# ./deploy.sh root@your-server-ip
#===============================================================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
log_step() { echo -e "${BLUE}[STEP]${NC} $1"; }
# 检查参数
if [ -z "$1" ]; then
echo ""
echo "=============================================="
echo " 少儿智慧阅读"
echo " 一键部署到宝塔面板"
echo "=============================================="
echo ""
echo "使用方法:"
echo " $0 your-server-ip"
echo " $0 root@your-server-ip"
echo ""
echo "示例:"
echo " $0 8.148.151.56"
echo " $0 root@8.148.151.56"
echo ""
exit 1
fi
# 解析参数
REMOTE_HOST="$1"
REMOTE_USER="root"
if [[ "$1" == *"@"* ]]; then
REMOTE_USER=$(echo "$1" | cut -d'@' -f1)
REMOTE_HOST=$(echo "$1" | cut -d'@' -f2)
fi
echo ""
echo "=============================================="
echo " 一键部署到宝塔面板"
echo "=============================================="
echo ""
echo " 服务器:$REMOTE_USER@$REMOTE_HOST"
echo ""
# 检查 SSH 连接
log_step "检查 SSH 连接..."
if ! ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" "echo '连接成功'" 2>/dev/null; then
log_error "SSH 连接失败,请检查:"
echo " 1. 服务器 IP 是否正确"
echo " 2. SSH 是否启用(默认端口 22"
echo " 3. 密码/密钥是否正确"
echo ""
echo " 如果是密码登录,请先执行:"
echo " ssh-copy-id $REMOTE_USER@$REMOTE_HOST"
exit 1
fi
log_info "SSH 连接成功"
# 检查远程服务器
log_step "检查远程服务器..."
ssh "$REMOTE_USER@$REMOTE_HOST" << 'ENDSSH'
# 检查是否安装了宝塔
if [ -d "/www/server/panel" ]; then
echo "宝塔面板:已安装"
else
echo "警告:未检测到宝塔面板"
fi
# 检查 JDK
if command -v java &> /dev/null; then
java_version=$(java -version 2>&1 | head -n 1)
echo "Java: $java_version"
else
echo "警告:未安装 Java"
fi
# 检查 MySQL
if command -v mysql &> /dev/null; then
echo "MySQL: 已安装"
else
echo "警告:未安装 MySQL"
fi
# 检查 Nginx
if command -v nginx &> /dev/null; then
echo "Nginx: 已安装"
fi
# 检查磁盘空间
disk_used=$(df -h / | tail -1 | awk '{print $5}')
echo "磁盘使用:$disk_used"
ENDSSH
echo ""
echo "=============================================="
echo " 部署前检查完成"
echo "=============================================="
echo ""
echo " 请确认:"
echo " 1. 宝塔面板已安装并可以访问"
echo " 2. 已在宝塔中安装 MySQL、Redis、Nginx"
echo " 3. 已创建数据库和用户(见 DEPLOY_BAOTA.md"
echo " 4. JDK 17 已安装(或通过宝塔安装)"
echo ""
read -p "是否继续部署?(y/n) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
# 部署后端
log_step "部署后端..."
export REMOTE_USER
export REMOTE_HOST
bash "$SCRIPT_DIR/deploy-backend.sh"
# 部署前端
log_step "部署前端..."
bash "$SCRIPT_DIR/deploy-frontend.sh"
echo ""
echo "=============================================="
echo " 部署完成!"
echo "=============================================="
echo ""
echo " 下一步操作:"
echo ""
echo " 1. 在宝塔面板配置 Nginx 反向代理"
echo " 网站 → 设置 → 配置文件"
echo " 参考 nginx-baota.conf 中的配置"
echo ""
echo " 2. 验证后端服务"
echo " ssh $REMOTE_USER@$REMOTE_HOST"
echo " curl http://localhost:8480/actuator/health"
echo ""
echo " 3. 访问前端页面"
echo " http://$REMOTE_HOST"
echo ""
echo " 4. 查看日志"
echo " 后端tail -f /www/wwwroot/reading-platform/logs/app.log"
echo " Nginx: tail -f /www/wwwlogs/你的域名.error.log"
echo ""
echo "=============================================="