Spring Boot 3.5.0 + Java 21 기반 엔터프라이즈 프레임워크 - Auth: JWT, MFA/TOTP, OAuth2 SSO, PasswordPolicy, LoginHistory - RBAC: Role-Permission, DeptScope, Redis 캐시 - Approval: Handler 패턴 결재 엔진 - Notification: SSE 실시간 알림 - File: Local/Azure Blob/AWS S3/GCP Storage - DataSource: Multi-DB 라우팅 (MySQL/PG/Oracle/MSSQL) - Admin: Thymeleaf 11화면 콘솔 - Compat: WBX FastAPI 호환 (에러/페이징) - Flyway: 4종 DBMS 마이그레이션 - Scripts: install.bat/sh, deploy-prod.sh - Docs: 설치가이드(OnPremise/Cloud), 개발자가이드 PDF Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
149 줄
3.8 KiB
Bash
149 줄
3.8 KiB
Bash
#!/usr/bin/env bash
|
|
# ============================================================
|
|
# WBX Spring Core — Linux/macOS 설치 스크립트
|
|
# 사용법: chmod +x scripts/install.sh && ./scripts/install.sh
|
|
# ============================================================
|
|
set -euo pipefail
|
|
|
|
# ---------- 색상 ----------
|
|
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
|
|
ok() { echo -e " ${GREEN}[OK]${NC} $1"; }
|
|
warn() { echo -e " ${YELLOW}[WARN]${NC} $1"; }
|
|
fail() { echo -e " ${RED}[FAIL]${NC} $1"; }
|
|
info() { echo -e " ${CYAN}[INFO]${NC} $1"; }
|
|
|
|
ERRORS=0
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " WBX Spring Core — 설치 점검"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# ---------- 1. JDK 21 ----------
|
|
echo "1. JDK 확인"
|
|
if command -v java &>/dev/null; then
|
|
JAVA_VER=$(java -version 2>&1 | head -1 | awk -F '"' '{print $2}' | cut -d. -f1)
|
|
if [ "$JAVA_VER" -ge 21 ] 2>/dev/null; then
|
|
ok "JDK $JAVA_VER"
|
|
else
|
|
fail "JDK $JAVA_VER (21 이상 필요)"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
else
|
|
fail "java 명령어 없음 — JDK 21 설치 필요"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
|
|
# ---------- 2. Git ----------
|
|
echo "2. Git 확인"
|
|
if command -v git &>/dev/null; then
|
|
ok "$(git --version)"
|
|
else
|
|
fail "git 없음"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
|
|
# ---------- 3. Docker (선택) ----------
|
|
echo "3. Docker 확인 (선택)"
|
|
if command -v docker &>/dev/null; then
|
|
ok "$(docker --version | head -1)"
|
|
else
|
|
warn "Docker 미설치 — DB/Redis를 직접 설치해야 합니다"
|
|
fi
|
|
|
|
# ---------- 4. 빌드 ----------
|
|
echo "4. Gradle 빌드"
|
|
if [ $ERRORS -gt 0 ]; then
|
|
fail "사전 요구사항 미충족 — 빌드 건너뜀"
|
|
else
|
|
chmod +x gradlew
|
|
if ./gradlew build -x test --console=plain -q; then
|
|
ok "BUILD SUCCESSFUL"
|
|
else
|
|
fail "빌드 실패"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
fi
|
|
|
|
# ---------- 5. .env 템플릿 ----------
|
|
echo "5. 환경변수 파일"
|
|
if [ ! -f .env ]; then
|
|
cat > .env << 'ENVEOF'
|
|
# ===== WBX Spring Core — 환경변수 =====
|
|
# 이 파일을 환경에 맞게 수정하세요.
|
|
|
|
# --- 프로필 ---
|
|
SPRING_PROFILES_ACTIVE=prod,mysql
|
|
|
|
# --- 서버 ---
|
|
SERVER_CONTEXT_PATH=/
|
|
|
|
# --- JWT (필수 변경!) ---
|
|
JWT_SECRET=your-production-secret-key-minimum-256-bits-long
|
|
|
|
# --- DB ---
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_NAME=wbx_spring
|
|
DB_USER=wbxapp
|
|
DB_PASS=StrongP@ss
|
|
|
|
# --- Redis ---
|
|
SPRING_DATA_REDIS_HOST=localhost
|
|
|
|
# --- CORS ---
|
|
CORS_ORIGINS=https://app.company.com
|
|
|
|
# --- 로그 경로 ---
|
|
LOG_PATH=/opt/wbx-app/logs/app.log
|
|
|
|
# --- Azure SSO (azure 프로필 사용 시) ---
|
|
# AZURE_CLIENT_ID=
|
|
# AZURE_CLIENT_SECRET=
|
|
# AZURE_TENANT_ID=
|
|
|
|
# --- Azure Blob Storage ---
|
|
# AZURE_STORAGE_ACCOUNT=
|
|
# AZURE_STORAGE_KEY=
|
|
# AZURE_CONTAINER=uploads
|
|
|
|
# --- AWS Cognito (aws 프로필 사용 시) ---
|
|
# AWS_COGNITO_CLIENT_ID=
|
|
# AWS_COGNITO_CLIENT_SECRET=
|
|
# AWS_USER_POOL_ID=
|
|
# AWS_REGION=ap-northeast-2
|
|
|
|
# --- AWS S3 ---
|
|
# AWS_S3_BUCKET=
|
|
# AWS_ACCESS_KEY=
|
|
# AWS_SECRET_KEY=
|
|
ENVEOF
|
|
chmod 600 .env
|
|
ok ".env 생성 완료 (값을 수정하세요)"
|
|
else
|
|
warn ".env 이미 존재 — 건너뜀"
|
|
fi
|
|
|
|
# ---------- 6. 디렉토리 ----------
|
|
echo "6. 디렉토리 생성"
|
|
mkdir -p logs uploads backup
|
|
ok "logs/ uploads/ backup/"
|
|
|
|
# ---------- 결과 ----------
|
|
echo ""
|
|
echo "=========================================="
|
|
if [ $ERRORS -eq 0 ]; then
|
|
echo -e " ${GREEN}설치 점검 완료${NC}"
|
|
echo ""
|
|
echo " 다음 단계:"
|
|
echo " 1. .env 파일을 환경에 맞게 수정"
|
|
echo " 2. DB 생성 (또는 docker compose -f docker-compose-dev.yml up -d)"
|
|
echo " 3. ./gradlew bootRun"
|
|
echo " 4. http://localhost:8080/health 확인"
|
|
else
|
|
echo -e " ${RED}오류 ${ERRORS}건 — 위의 [FAIL] 항목을 해결하세요${NC}"
|
|
fi
|
|
echo "=========================================="
|
|
echo ""
|