kindergarten_java/deploy-frontend.sh
En 40589f59e7 chore: 重命名项目目录
前后端目录重命名:
- reading-platform-java/ → lesingle-edu-reading-platform-backend/
- reading-platform-frontend/ → lesingle-edu-reading-platform-frontend/

更新相关文件:
- 所有 shell 脚本中的目录引用
- pom.xml 和 application.yml 中的项目名称
- package.json 中的项目名称
- .claude/CLAUDE.md 中的路径引用
- README 文档中的路径引用
2026-03-26 11:31:47 +08:00

121 lines
3.0 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
#===============================================================================
# 前端生产环境构建并部署脚本
#
# 使用方法:
# ./deploy-frontend.sh user@host
# 或
# export REMOTE_USER=root
# export REMOTE_HOST=8.148.151.56
# ./deploy-frontend.sh
#===============================================================================
set -e
# 配置
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
FRONTEND_DIR="$SCRIPT_DIR/lesingle-edu-reading-platform-frontend"
REMOTE_DIR="/www/wwwroot/reading.ycapp.cn"
# SSH 配置(可通过环境变量覆盖)
REMOTE_USER="${REMOTE_USER:-root}"
REMOTE_HOST="${REMOTE_HOST:-}"
REMOTE_PORT="${REMOTE_PORT:-22}"
# 颜色定义
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 [ -n "$1" ]; then
if [[ "$1" == *"@"* ]]; then
REMOTE_USER=$(echo "$1" | cut -d'@' -f1)
REMOTE_HOST=$(echo "$1" | cut -d'@' -f2)
fi
fi
if [ -z "$REMOTE_HOST" ]; then
log_error "请提供远程主机:$0 user@host 或设置 REMOTE_HOST 环境变量"
exit 1
fi
echo ""
echo "=============================================="
echo " 前端部署到宝塔"
echo "=============================================="
echo ""
echo " 远程主机:$REMOTE_USER@$REMOTE_HOST"
echo " 部署目录:$REMOTE_DIR"
echo ""
cd "$FRONTEND_DIR"
# 步骤 1: 检查 Node.js
log_step "检查环境..."
if ! command -v node &> /dev/null; then
log_error "未找到 Node.js"
exit 1
fi
node_version=$(node -v)
npm_version=$(npm -v)
log_info "Node.js: $node_version, npm: $npm_version"
# 步骤 2: 安装依赖
log_step "安装依赖..."
if [ ! -d "node_modules" ]; then
npm install
else
log_info "node_modules 已存在,跳过依赖安装"
fi
# 步骤 3: 构建
log_step "构建前端..."
npm run build
if [ ! -d "dist" ]; then
log_error "构建失败,未找到 dist 目录"
exit 1
fi
log_info "构建成功"
# 步骤 4: 上传到服务器
log_step "上传到远程服务器..."
# 创建远程目录
ssh -o StrictHostKeyChecking=no -p "$REMOTE_PORT" "$REMOTE_USER@$REMOTE_HOST" \
"mkdir -p $REMOTE_DIR"
# 上传文件
scp -o StrictHostKeyChecking=no -r -P "$REMOTE_PORT" \
dist/ \
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
log_info "上传完成"
# 步骤 5: 设置权限
log_step "设置文件权限..."
ssh -o StrictHostKeyChecking=no -p "$REMOTE_PORT" "$REMOTE_USER@$REMOTE_HOST" << 'ENDSSH'
chown -R www:www /www/wwwroot/reading.ycapp.cn
chmod -R 755 /www/wwwroot/reading.ycapp.cn
ENDSSH
echo ""
echo "=============================================="
echo " 前端部署完成!"
echo "=============================================="
echo ""
echo " 访问地址http://${REMOTE_HOST}"
echo ""
echo " 下一步:在宝塔面板配置 Nginx 反向代理"
echo " /api -> http://localhost:8480"
echo ""