본문 바로가기

WAS/WebLogic

[설치] - WLS 11g(10.3.6) - UNIX/LINUX 환경

#01. JDK 호환 정보

Oracle JDK
 - Oracle JDK 1.6.0_35+
 - Oracle JDK 1.7.0_07+

IBM JDK
- 1.6 이상

 


 

#02. 서버 엔진 설치

설치 실행 명령어 예시

$ export LANG=C
$ /usr/jdk/jdk1.7/jdk1.7.0_80/bin/java -jar wls1036_generic.jar -mode=console -Djava.io.tmpdir=/weblogic/weblogic10/tmp

 

Djava.io.tmpdir 옵션 역할

-Djava.io.tmpdir=

웹로직 jar 파일을 설치하면 압축이 기본적으로 /tmp 경로에 풀리게 되는데
/tmp의 공간이 부족할 경우 다른 경로로 변경하는 용도

 

상세 절차는 아래 파일 다운로드하여 확인

wls1036_서버설치가이드.zip
0.18MB

이미지01
=> 이미지 참고하여 서버 설치 명령어 실행

이미지02
=> Create a new Middleware Home 선택

이미지03
=> weblogic 설치 할 디렉토리 입력  

이미지04
=>Security Update를 비활성화
=> 3 -> no -> yes 순으로 입력

이미지05
=> Receive Security Update No 확인 후 다음으로

이미지06
=> 설치할 제품 선택 화면
=> 2번 선택

이미지07
=> Oracle Coherence는 불필요합니다.
=> 2번 입력 후 엔터

이미지08
=> Oracle Coherence 텍스트 우측의 x 표시 없어진 것 확인 후 다음으로

이미지09
=> JDK 경로 확인 후 다음으로

이미지10
=>  weblogic 설치 경로 확인
=> Oracle Coherence 설치하지 않는 것 확인 

이미지11
=> 설치 완료. Domain 구성으로 이동

 


 

#03. Domain 구성

01. console mode

해당 방법으로 domain 구성하는 것이 간편하다.

상세 절차는 아래 파일 다운로드하여 확인.

wls1036_도메인구성가이드.zip
0.16MB

이미지01
=> {서버설치디렉토리}/wlserver_10.3/common/bin 으로 이동
=> 이미지 참고하여 domain 구성 명령어 실행

이미지02
=> Create a new WebLogic domain 선택

이미지03
=> Choose Weblogic Platform components 선택
=> Templates 선택 창에서는 바로 엔터 입력

이미지04
=> 도메인 이름 입력

이미지05
=> 도메인 디렉토리가 생성될 경로 지정
=> 경로의 맨 뒤에 도메인 이름까지 작성하면 안된다

이미지06
=> user 명과 password 설정하는 화면
=> 1, 2, 3, 순으로 설정 후 엔터 입력하여 다음 화면으로

이미지07
=> Production Mode 선택
=> JDK 경로 확인

이미지08
=> 도메인의 서버를 구성합니다.
=> 이미지에서는 필수로 생성해야 하는 Admin Server만 만들도록 선택
=> Managed Server는 Admin Console 에서 생성하는 것이 더 간편하고 안전하다

이미지09
=> Admin Server 구성 예시
=> 구성 완료 후 엔터 입력하여 다음 화면으로

이미지10
=>  도메인 생성 완료
=> Admin Server 기동하여 Admin console 접속 후 Managed Server 생성

 


 

02. slient mode

console 모드가 보다 간편하므로 꼭 필요한 경우에만 사용하도록 한다.

$ cd {WEBLOGIC_HOME}/oracle_common/common/bin
$ ./wlst.sh domain.py
(domain.py 예시)

readTemplate("/was/wls1036/common/templates/domains/wls.jar")
setOption('JavaHome', '/usr/java_1.7.0_80');
setOption('ServerStartMode', 'prod')

cd('Security/base_domain/User/weblogic');
set('Name', '유저명');
cmo.setPassword('패스워드');

cd('Servers/AdminServer')
set('Name','어드민서버명');
set('ListenAddress','IP주소')
set('ListenPort', 포트번호)

cd('/');
writeDomain('/was/domains/도메인명');
closeTemplate();
exit();

 


 

#04. 기동 정지 스크립트 (Oracle JAVA 기준)

(boot.properties)

username=유저명
password=패스워드

 


 

AdminServer 기동 스크립트 (startA.sh)

##### server info #####

DOMAIN_NAME=ehc_domain

SERVER_NAME=AdminServer
SERVER_PORT=9010
BOOT_PROPERTIES=${DOMAIN_HOME}/boot.properties

DOMAIN_HOME={도메인경로}
SERVER_NAME={서버명}
SERVER_PORT={포트번호}
BOOT_PROPERTIES=${DOMAIN_HOME}/boot.properties

#------------------------------------------------------------------------------------

##### user & process check #####

#user check
USER=`whoami`

if [ "$USER" != "midadm" ]
then
        echo =============================================
        echo You are not weblogic user, Please change user
        echo =============================================
        exit
fi

#process running check
PID=`ps -ef|grep java|grep ${SERVER_NAME}|awk '{print $2}'`

if [ "$PID" != "" ]
then
        echo ==============================================
        echo "${SVR}"_[pid:"${PID}"] Process Is Already Running !!!
        echo ==============================================
        exit
fi

#------------------------------------------------------------------------------------

##### server settings #####

#instance info
JAVA_OPTIONS="${JAVA_OPTIONS} -D${SERVER_NAME} -D${SERVER_PORT}"

#boot_properties
JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.system.BootIdentityFile=${BOOT_PROPERTIES}"

#urandom
JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.security.egd=file:///dev/./urandom"

#ipv4 options
JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.net.preferIPv4Stack=true"

#heap memory options
JAVA_OPTIONS="${JAVA_OPTIONS} -Xms1024m -Xmx1024m"

#--------------------------------------------------------------------------------------

##### log directory #####

#log_directory
LOG_DIR={로그파일 기록할 경로}

#log_time
LOG_TIME=$(date +"%Y%m%d_%H_%M")

#------------------------------------------------------------------------------------

##### server start #####

#export args
export USER_MEM_ARGS JAVA_OPTIONS

#stdout log_backup
mv ${LOG_DIR}/stdout/${SERVER_NAME}.out ${LOG_DIR}/stdout/${SERVER_NAME}.out_${LOG_TIME}

#server_start
nohup ${DOMAIN_HOME}/bin/startWebLogic.sh >> ${LOG_DIR}/stdout/${SERVER_NAME}.out 2>&1 &
#tail -f $LOG_DIR/$SERVER_NAME.out

 


 

ManagedServer 기동 스크립트 (startM.sh)

##### server info #####

DOMAIN_HOME={도메인경로작성}
SERVER_NAME={서버명작성}
ADMIN_SERVER_IP=192.168.55.169
ADMIN_SERVER_PORT=9001
ADM_URL="t3://${ADMIN_SERVER_IP}:${ADMIN_SERVER_PORT}"
BOOT_PROPERTIES=${DOMAIN_HOME}/boot.properties

#--------------------------------------------------------------------------------------

##### user & process check #####

#user check
USER=`whoami`

if [ "$USER" != "midadm" ]
then
        echo =============================================
        echo You are not weblogic user, Please change user
        echo =============================================
        exit
fi

#process running check
PID=`ps -ef|grep java|grep ${SERVER_NAME}|awk '{print $2}'`

if [ "$PID" != "" ]
then
        echo ==============================================
        echo "${SVR}"_[pid:"${PID}"] Process Is Already Running !!!
        echo ==============================================
        exit
fi

#--------------------------------------------------------------------------------------

##### server settings #####

#instance info
JAVA_OPTIONS="${JAVA_OPTIONS} -D${SERVER_NAME} -D${SERVER_PORT}"

#boot_properties
JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.system.BootIdentityFile=${BOOT_PROPERTIES}"

#urandom
JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.security.egd=file:///dev/./urandom"

#ipv4 options
JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.net.preferIPv4Stack=true"

#heap memory options
JAVA_OPTIONS="${JAVA_OPTIONS} -Xms512m -Xmx512m"

#classpath
CLASSPATH="${CLASSPATH}"

#--------------------------------------------------------------------------------------

##### log directory #####

#log_directory
LOG_DIR={로그파일경로}

#log_time
LOG_TIME=$(date +"%Y%m%d_%H_%M")

#--------------------------------------------------------------------------------------

##### gc log & dump files #####

#gc_log
JAVA_OPTIONS="${JAVA_OPTIONS} -verbose:gc -Xloggc:${LOG_DIR}/gc/gc_${SERVER_NAME}.log"
JAVA_OPTIONS="${JAVA_OPTIONS} -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC"

#heapdump options
JAVA_OPTIONS="${JAVA_OPTIONS} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_DIR}/dump_files/heapdump_${SERVER_NAME}.hprof"

#--------------------------------------------------------------------------------------

##### server start #####

#export args
export JAVA_OPTIONS USER_MEM_ARGS EXT_PRE_CLASSPATH LD_LIBRARY_PATH

#stdout log_backup
mv ${LOG_DIR}/stdout/${SERVER_NAME}.out ${LOG_DIR}/stdout/${SERVER_NAME}.out_${LOG_TIME}

#gc log backup
mv ${LOG_DIR}/gc/gc_${SERVER_NAME}.log ${LOG_DIR}/gc/gc_${SERVER_NAME}.log_${LOG_TIME}

#server_start
nohup ${DOMAIN_HOME}/bin/startManagedWebLogic.sh ${SERVER_NAME} ${ADM_URL} >> ${LOG_DIR}/stdout/${SERVER_NAME}.out 2>&1 &
#tail -f ${LOG_DIR}/${SERVER_NAME}.out

 


 

AdminServer 정지 스크립트 (stopA.sh)

#stop admin server

ADMIN_SERVER_IP=0.0.0.0
ADMIN_SERVER_PORT=0000

. ./bin/setDomainEnv.sh
java weblogic.Admin -url t3://${ADMIN_SERVER_IP}:${ADMIN_SERVER_PORT} -username 유저명 -password 패스워드 FORCESHUTDOWN

 


 

ManagedServer 정지 스크립트 (stopM.sh)

#stop managed server

MANAGED_SERVER_IP=0.0.0.0
MANAGED_SERVER_PORT=0000

. ./bin/setDomainEnv.sh
java weblogic.Admin -url t3://${MANAGED_SERVER_IP}:${MANAGED_SERVER_PORT} -username 유저명 -password 패스워드 FORCESHUTDOWN

 


 

#05. Log 설정

weblogic server 로그

 - weblogic 서버 자체에서 기록하는 로그

 - default 위치는 {DOMAIN_HOME}/servers/{INSTANCE_NAME}/로그파일.log

 - 아래와 같이 설정하여 24시간 마다 순환하도록 하는 것이 일반적

 

로그 레벨은 아래와 같이 info / info / notice 로 설정하는 것이 일반적

 

weblogic access 로그

 - weblogic에 deploy한 웹 어플리케이션에 들어오는 접속 내역을 기록하는 로그

 - 아래와 같이 설정하여 24시간 마다 순환하도록 하는 것이 일반적

 

weblogic stdout 로그

 - weblogic 서버 관련 모든 로그 + application 관련 로그

 - 서버 기동 스크립트에서 설정한다

#server_start & stdout_log

LOG_DIR={경로작성}
LOG_TIME='date +%y%m%d_%H%M'
mv ${LOG_DIR}/${SERVER_NAME}.out ${LOG_DIR}/${SERVER_NAME}.out.${LOG_TIME}

nohup ${DOMAIN_HOME}/bin/startManagedWebLogic.sh ${SERVER_NAME} ${ADM_URL} > ${LOG_DIR}/${SERVER_NAME}.out 2>&1 &

 

stdout 로그 rotation

 - 이를 24시간마다 순환시키기 위해서는 OS 측에서 별도의 설정이 필요하다

 - crontab 을 통해 24시간마다 out 로그를 순환하도록 한다

 - /etc/logrotate.d/{설정파일}

 - copytruncate 옵션을 꼭 작성해야 함. 그렇지 않으면 로테이션 후 기존 로그 파일에 로그가 이어서 기록된다.

{로그경로}/{로그파일명}.out {
    copytruncate
    missingok
    daily
    create 0664 유저 그룹
    rotate 30
    dateext
}

 


 

#06. 성능 튜닝

heap memory 용량 튜닝

 - 서버 기동 스크립트에서 수정한다

 - Xms와 Xmx를 동일값으로 세팅한다. 동일값으로 세팅 되어야 시스템 부하가 적다.

 - 아래 코드는 JDK 1.7 기준으로 작성한 것

#memory options
JAVA_OPTS="${USER_MEM_ARGS} -Xms512m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=128M"

 

thread 용량 튜닝

 - 서버 기동 스크립트에서 설정하는 방법과

 - weblogic config 파일 내에서 수정하는 방법이 있다

기동 스크립트 설정 방법
-Dweblogic.threadpool.MinPoolSize=100
-Dweblogic.threadpool.MaxPoolSize=200

config.xml 설정 방법
<server>
<self-tuning-thread-pool-size-min>100</self-tuning-thread-pool-size-min>
<self-tuning-thread-pool-size-max>200</self-tuning-thread-pool-size-max>
........
</server>

 


 

#07. 그 외 부가 설정들

"weblogic 플러그인 사용" 옵션

기본값은 비활성화로 되어있으나, 보통 활성화 하는 편이다.
체크 표시 하여 활성화 하도록 한다.신규 설치 시 참고 할 것

 

managed server 만 단독으로 구동하기 (MSI 모드)

 - config.xml 에서 직접 설정하는 방법

#01. config 디렉토리 이동
../${DOMAIN_HOME}/config

#02. vi config.xml
아래와 같이 수정 (managed-server-independence-enabled 태그 추가)

<server>
    <name>m1</name>
    <listen-port>9001</listen-port>
    <cluster>c1</cluster>
    <listen-address>192.168.56.2</listen-address>
    <jta-migratable-target>
      <user-preferred-server>m1</user-preferred-server>
      <cluster>c1</cluster>
    </jta-migratable-target>
    <managed-server-independence-enabled>true</managed-server-independence-enabled>
  </server>

 

 

 - Admin Console 에서 설정하는 방법

서버 메뉴 -> 구성 -> 튜닝 -> 고급 메뉴 -> "관리 서버 독립성 허용" 체크 표시