Files
bns_system/setup.sh
2025-09-16 14:04:11 +09:00

192 lines
7.0 KiB
Bash

#!/bin/bash
# ==============================================================================
# PLM 프로젝트 환경 설정 스크립트
# ==============================================================================
echo "================================================================"
echo "PLM 프로젝트 환경 설정을 시작합니다..."
echo "================================================================"
# ------------------------------------------------------------------------------
# 1. Git 설정
# ------------------------------------------------------------------------------
echo "🔧 Git 설정 중..."
# Git 사용자 정보 설정 (이미 설정되어 있으면 건너뜀)
if [ -z "$(git config --global user.name)" ]; then
echo "Git 사용자 이름을 설정합니다..."
git config --global user.name "PLM Developer"
fi
if [ -z "$(git config --global user.email)" ]; then
echo "Git 이메일을 설정합니다..."
git config --global user.email "developer@plm-ilshin.local"
fi
# Git 기본 설정
git config --global init.defaultBranch main
git config --global pull.rebase false
git config --global core.autocrlf input
git config --global core.safecrlf false
echo "✅ Git 설정 완료"
# ------------------------------------------------------------------------------
# 2. 파일 소유권 설정
# ------------------------------------------------------------------------------
echo "📁 파일 소유권 설정 중..."
# 전체 프로젝트 소유권을 현재 사용자로 변경
sudo chown -R $USER:$USER .
# 특히 중요한 디렉토리들의 소유권 확인
sudo chown -R $USER:$USER WebContent/
sudo chown -R $USER:$USER src/
sudo chown -R $USER:$USER db/
echo "✅ 파일 소유권 설정 완료"
# ------------------------------------------------------------------------------
# 3. 디렉토리 권한 설정
# ------------------------------------------------------------------------------
echo "🔐 디렉토리 권한 설정 중..."
# 주요 디렉토리 권한 설정
chmod 755 .
chmod -R 755 WebContent/
chmod -R 755 src/
chmod -R 755 db/
# 스크립트 파일들 실행 권한 부여
find . -name "*.sh" -type f -exec chmod +x {} \;
# classes 디렉토리가 없으면 생성하고 권한 설정
mkdir -p WebContent/WEB-INF/classes
chmod 755 WebContent/WEB-INF/classes
# lib 디렉토리 권한 설정
if [ -d "WebContent/WEB-INF/lib" ]; then
chmod 755 WebContent/WEB-INF/lib
fi
echo "✅ 디렉토리 권한 설정 완료"
# ------------------------------------------------------------------------------
# 4. JSP 파일 권한 설정
# ------------------------------------------------------------------------------
echo "📄 JSP 파일 권한 설정 중..."
# view 디렉토리의 모든 JSP 파일 권한 설정
if [ -d "WebContent/WEB-INF/view" ]; then
find WebContent/WEB-INF/view -name "*.jsp" -type f -exec chmod 644 {} \;
find WebContent/WEB-INF/view -type d -exec chmod 755 {} \;
fi
echo "✅ JSP 파일 권한 설정 완료"
# ------------------------------------------------------------------------------
# 5. 빌드 환경 정리
# ------------------------------------------------------------------------------
echo "🧹 빌드 환경 정리 중..."
# 기존 클래스 파일 삭제 (권한 문제 없이)
if [ -d "WebContent/WEB-INF/classes" ]; then
rm -rf WebContent/WEB-INF/classes/*
fi
# 필요한 디렉토리 다시 생성
mkdir -p WebContent/WEB-INF/classes
mkdir -p WebContent/WEB-INF/lib
echo "✅ 빌드 환경 정리 완료"
# ------------------------------------------------------------------------------
# 6. Docker 권한 설정 (Docker가 설치되어 있는 경우)
# ------------------------------------------------------------------------------
if command -v docker &> /dev/null; then
echo "🐳 Docker 권한 설정 중..."
# Docker 그룹에 현재 사용자 추가 (이미 추가되어 있으면 무시됨)
if ! groups $USER | grep -q docker; then
sudo usermod -aG docker $USER
echo "⚠️ Docker 그룹에 추가되었습니다. 변경사항 적용을 위해 로그아웃 후 다시 로그인하세요."
fi
echo "✅ Docker 권한 설정 완료"
fi
# ------------------------------------------------------------------------------
# 7. Tomcat 설정 파일 권한
# ------------------------------------------------------------------------------
echo "☕ Tomcat 설정 권한 설정 중..."
if [ -d "tomcat-conf" ]; then
chmod -R 644 tomcat-conf/*
chmod 755 tomcat-conf
fi
echo "✅ Tomcat 설정 권한 설정 완료"
# ------------------------------------------------------------------------------
# 8. 환경 변수 및 alias 설정
# ------------------------------------------------------------------------------
echo "⚙️ 환경 설정 중..."
# .bashrc에 PLM 프로젝트 관련 alias 추가 (중복 방지)
if ! grep -q "# PLM Project Aliases" ~/.bashrc; then
cat >> ~/.bashrc << 'EOF'
# PLM Project Aliases
alias plm-setup='cd ~/plm-ilshin && ./setup.sh'
alias plm-build='cd ~/plm-ilshin && ./dev_git_only.sh'
alias plm-clean='cd ~/plm-ilshin && rm -rf WebContent/WEB-INF/classes/* && echo "Build artifacts cleaned"'
alias plm-logs='cd ~/plm-ilshin && docker-compose logs -f'
alias plm-restart='cd ~/plm-ilshin && docker-compose restart'
EOF
echo "✅ PLM 프로젝트 alias가 ~/.bashrc에 추가되었습니다."
fi
echo "✅ 환경 설정 완료"
# ------------------------------------------------------------------------------
# 9. 설정 검증
# ------------------------------------------------------------------------------
echo "🔍 설정 검증 중..."
# 주요 파일들의 소유권 확인
echo "주요 파일 소유권 확인:"
ls -la WebContent/WEB-INF/view/contractMgmt/ | head -5
echo ""
# Git 설정 확인
echo "Git 설정 확인:"
echo "사용자: $(git config --global user.name)"
echo "이메일: $(git config --global user.email)"
echo ""
# 디렉토리 권한 확인
echo "주요 디렉토리 권한 확인:"
ls -ld WebContent/ src/ WebContent/WEB-INF/classes/
echo ""
echo "✅ 설정 검증 완료"
# ------------------------------------------------------------------------------
# 완료 메시지
# ------------------------------------------------------------------------------
echo "================================================================"
echo "🎉 PLM 프로젝트 환경 설정이 완료되었습니다!"
echo "================================================================"
echo ""
echo "📌 추가된 명령어들:"
echo " plm-setup : 이 설정 스크립트 재실행"
echo " plm-build : 프로젝트 빌드 및 Git 작업"
echo " plm-clean : 빌드 산출물 정리"
echo " plm-logs : Docker 로그 확인"
echo " plm-restart : Docker 컨테이너 재시작"
echo ""
echo "💡 터미널을 재시작하거나 'source ~/.bashrc'를 실행하여"
echo " 새로운 alias를 사용할 수 있습니다."
echo ""
echo "🚀 이제 개발을 시작할 수 있습니다!"
echo "================================================================"