1. 시스템 사전 계정 및 권한 격리
RHEL 7.9 서버에서 미들웨어 설치를 격리된 상태로 수행하기 위해 전용 소프트웨어 그룹과 관리자 계정을 생성합니다.
#!/bin/bash
# 대상 그룹 및 사용자 변수 선언
GRP_NAME="wls_software"
USR_NAME="wls_operator"
groupadd "${GRP_NAME}"
useradd -g "${GRP_NAME}" -m "${USR_NAME}"
passwd "${USR_NAME}"
echo "[완료] 계정 권한 할당"
2. 레퍼런스 디렉토리 구조 설계
Oracle 표준 설치 관례를 준수하여 애플리케이션 바이너리 영역과 도메인 저장소를 물리적으로 분리합니다.
APP_BASE="/u01/app/oracle/middleware"
DOMAIN_ROOT="/u01/domains/prod_env"
MW_VERSION="12.2.1.4"
mkdir -p "${APP_BASE}/${MW_VERSION}"
mkdir -p "${DOMAIN_ROOT}"
chown -R ${USR_NAME}:${GRP_NAME} /u01
chmod -R 755 /u01
3. JDK 연동 및 런타임 셸 환경 고정
웹로톱 구동에 필수적인 자바 경로를 사용자 프로필에 명시하고 즉시 반영합니다.
# ~/.bash_profile 에 런타임 변수 주입
cat >> ~/.bash_profile << 'EOF'
export WLS_JAVA_HOME=/u01/app/java/jdk1.8.0_311
export PATH="${WLS_JAVA_HOME}/bin:${PATH}"
export CLASSPATH=".:${WLS_JAVA_HOME}/lib/tools.jar:${WLS_JAVA_HOME}/lib/dt.jar"
EOF
source ~/.bash_profile
java -version
4. 정적 설치 매개변수(Response File) 작성
그래픽 인터페이스 없이 터미널에서 자동화된 설치를 가능하게 하는 응답 파일과 인벤토리 위치 정보를 준비합니다.
locator.cfg:
inst_group=${GRP_NAME}
inventory_loc=/u01/app/oraInventory
install_params.cfg:
[ENGINE]
Response File Version=1.0.0.0.0
[GENERIC]
ORACLE_HOME=/u01/app/oracle/middleware/12.2.1.4
INSTALL_TYPE=WebLogic Server
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=<SECURE VALUE>
DECLINE_SECURITY_UPDATES=true
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=<SECURE VALUE>
COLLECTOR_SUPPORTTHUB_URL=
5. 헤드리스 설치 프로세스 실행
준비된 파라미터를 기준으로 JAR 파서를 호출하여 무설치 모드를 진행합니다.
cd /tmp/weblogic_artifacts
java -jar fmw_12.2.1.4.0_wls_generic.jar \
-silent \
-responseFile /path/to/install_params.cfg \
-invPtrLoc /path/to/locator.cfg \
|| { echo "[오류] 설치 실패: /u01/app/oraInventory/logs/ 디렉토리 점검"; exit 1; }
6. WLST Off-line 기반 도메인 자동 생성
대화형 콘솔 조작을 배제하고 스크립트 방식으로 기본 도메인 템플릿을 확장하여 영구 구성을 만듭니다.
# build_domain_script.py
import os
import sys
# 1. 원본 템플릿 로드
readTemplateForUpdate('/u01/app/oracle/middleware/12.2.1.4/wlserver/common/templates/wls/wls.jar')
# 2. 관리 서버(AdminServer) 포트 및 바인딩 규칙 재정의
cd('Server/AdminServer')
set('ListenAddress','')
set('ListenPort', 9002)
# 3. 기본 인증 자격 증명 교체
cd('/')
cd('Security/base_domain/User/weblogic')
cmo.setPassword('Pr0tect#WLS24')
# 4. 도메인 디스크립터 저장 및 세션 종료
setOption('OverwriteDomain', 'true')
writeDomain('/u01/domains/prod_env/main_domain')
closeTemplate()
exit()
작성된 스크립트를 WLRT 인터프리터를 통해 실행합니다.
${APP_BASE}/${MW_VERSION}/wlserver/common/bin/wlst.sh /path/to/build_domain_script.py
7. 서비스 기동 및 인터페이스 접속
생성된 도메인 컨테이너를 백그라운드로 기동하며, 반드시 환경 활성화 스크립트를 먼저 로딩해야 합니다.
cd /u01/domains/prod_env/main_domain
. ./bin/setDomainEnv.sh
# 표준 출력/에러 통합 및 백그라운드 처리
nohup bin/startWebLogic.sh > /var/log/weblogic/runtime.log 2>&1 &
tail -f /var/log/weblogic/runtime.log
네트워크 보안 그룹에서 포트가 개방된 호스트 IP로 브라우저 접근 시 관리 대시보드를 확인할 수 있습니다.
http://{SERVER_ADDRESS}:9002/console