2026-03-25 18:05:02 +08:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
|
|
#===============================================================================
|
2026-03-26 12:02:20 +08:00
|
|
|
|
# 少儿智慧阅读 - 一键部署到宝塔面板
|
2026-03-25 18:05:02 +08:00
|
|
|
|
#
|
|
|
|
|
|
# 使用方法:
|
|
|
|
|
|
# ./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 "=============================================="
|
2026-03-26 12:02:20 +08:00
|
|
|
|
echo " 少儿智慧阅读"
|
2026-03-25 18:05:02 +08:00
|
|
|
|
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 "=============================================="
|