6. Wildfly 설치
1.1 도커 Wildfly 설치
- Wildfly 설치를 위한 우분투 도커 이미지를 이용해서 컨테이너 생성
docker run -d --name wildfly26.1.3-1 -p 8088:8088 -p 9990:9990 -it --privileged=true --hostname wildfly1 --restart no --net net-cbw --ip 10.10.0.31 -v /app/wildfly/was:/app/wildfly/was cbwstar/ubuntu:22.04 /sbin/init
- 호스트 컴퓨터와 도커 컨테이너 와의 통신 포트가 잘 떠 있는지 확인
- ss -tunelp
로컬 호스트 컴퓨터(여기서는 우분투리눅스 서버) 도커 컨테이너(방금전에 docker run으로 만든 컨테이너) 와 9990,8088 포트가 연결이 되었다. 9990 포트는 관리자 포트이고 8088은 wildfly에서 웹서비스를 할 포트이다.
컨테이너도 잘 생성이 되었으니 wildfly 최신버전 28.0.1을 설치 한다. 이 문서를 작성하는 시점에서 최신 버전이다.
- 생성된 도커 컨테이너 접속
- docker ps -a (컨테이너 프로세스 확인)
- docker exec -it wildfly28.0.1-1 /bin/bash
- Wildfly 다운로드
Url : https://www.wildfly.org/downloads/
- WildFly 다운 받을시에 Java EE 를 지원하는 최종 버전은 26.1.3.Final 버전이다.
- 27 버전 이상부터는 Java EE는 지원 안한다 Jakarta EE 를 지원한다.
- Jakarta EE 는 스프링프레임워크 6.0 이상부터, 스프링부트 3.0 이상에서 만 지원하고 톰캣서버는 Java EE까지만 현재 지원한다. WildFly Was 만 27버전 이상에서 Jakarta EE를 지원하는데 Java EE와 Jakarta EE는 호환성이 없다.
전자정부 프레임워크 최신버전 4.1.0 버전에서도 Java EE까지만 지원한다.
그래서 Java EE 최종 지원 마지막 버전인 WildFly 26.1.3.Final 버전을 다운받아 설치 하자.
- 도커 에 접속후 다운 받을 곳으로 이동 한다.
- cd /app
- apt install wget (wget 유틸 설치) wget 으로 파일 다운 받기 위해서 설치
- wget https://github.com/wildfly/wildfly/releases/download/26.1.3.Final/wildfly-26.1.3.Final.tar.gz
- 자바 설치
- Wildfly 실행하기 위해서는 자바가 설치 되어 있어야 한다.
- $ apt update
- openjdk 자바 17버전을 설치 한다.
- $ apt install openjdk-17-jdk
- 자바 버전 확인
- $ java -version
- Wildfly 압축 해제 및 셋팅
- $ tar xvf wildfly-26.1.3.Final.tar.gz
- Wildfly 서비스를 설정하기 위한 폴더 생성
- $ mkdir domains
- $ cd domains 폴더이동
- $ 관리자 계정 암호를 설정한다.
- $ /app/wildfly-26.1.3.Final/bin/add-user.sh
- What type of user do you wish to add?
- a) Management User (mgmt-users.properties)
- b) Application User (application-users.properties)
- (a):
- a 선택
- Enter the details of the new user to add.
- Using realm 'ManagementRealm' as discovered from the existing property files.
- Username : cbw [아무거나 사용자 계정 생성]
- Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
- - The password should be different from the username
- - The password should not be one of the following restricted values {root, admin, administrator}
- - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
- Password : 비밀번호 입력
- WFLYDM0098: The password should be different from the username
- Are you sure you want to use the password entered yes/no? yes
- Re-enter Password : 비밀번호 확인
- What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
- About to add user 'cbw' for realm 'ManagementRealm'
- Is this correct yes/no? yes
- Added user 'cbw' to file '/app/wildfly-26.1.3.Final/standalone/configuration/mgmt-users.properties'
- Added user 'cbw' to file '/app/wildfly-26.1.3.Final/domain/configuration/mgmt-users.properties'
- Added user 'cbw' with groups to file '/app/wildfly-26.1.3.Final/standalone/configuration/mgmt-groups.properties'
- Added user 'cbw' with groups to file '/app/wildfly-26.1.3.Final/domain/configuration/mgmt-groups.properties'
- root@wildfly1:/app/wildfly-26.1.3.Final/bin#
관리자를 생성해야 나중에 관리자 화면에서 로그인을 할수 있다.
- $ mkdir sample (서비스할 테스트 샘플 폴더를 만든다(실제 서비스 폴더명으로)
- $ cd sample (샘플 폴더로 이동)
- $ cp -r /app/wildfly-26.1.3.Final/standalone/configuration/ ./configuration (wildfly 환경설정 파일 복사)
- $ ll ( 복사 확인)
- 환경설정 파일 생성 (env.sh)
- root@wildfly1:/app/domains/sample# vi env.sh
#!/bin/bash DATE=`date +%Y%m%d%H%M%S` ##### JBOSS Directory Setup ##### export JBOSS_HOME=/app/wildfly-26.1.3.Final export SERVER_NAME=sample export DOMAIN_BASE=/app/domains/$SERVER_NAME export JBOSS_LOG_DIR=$DOMAIN_BASE/logs export GCLOG=$JBOSS_LOG_DIR/gclog/$SERVER_NAME-gc.log.$DATE ##### Configration File ##### export CONFIG_FILE=standalone-ha.xml export NODE_NAME=$SERVER_NAME export PORT_OFFSET=0 CONTROLLER_OFFSET=$PORT_OFFSET export JBOSS_USER=root ##### Bind Address ##### export BIND_ADDR=10.10.0.31 export MGMT_ADDR=127.0.0.1 export CONTROLLER_IP=$MGMT_ADDR CONTROLLER_PORT=`expr 9990 + $CONTROLLER_OFFSET` export CONTROLLER_PORT export LAUNCH_JBOSS_IN_BACKGROUND=true ##### JBoss System module and User module directory ##### export JBOSS_MODULEPATH=$JBOSS_HOME/modules:$JBOSS_HOME/modules.ext # JVM Options : Server export JAVA_OPTS="-server $JAVA_OPTS" # JVM Options : Memory export JAVA_OPTS=" $JAVA_OPTS -Xms2048m -Xmx2048m -XX:MaxMetaspaceSize=512m " export JAVA_OPTS=" $JAVA_OPTS -XX:+UseParallelGC " #export JAVA_OPTS=" $JAVA_OPTS -XX:+UseParallelOldGC " export JAVA_OPTS=" $JAVA_OPTS -XX:+DisableExplicitGC" export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xlog:gc:$GCLOG" export JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError" export JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=$CATALINA_HOME/$SERVER_NAME-Heapdump.$DATE" export JAVA_OPTS="$JAVA_OPTS -DjvmRoute=$SERVER_NAME" export JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom" export JAVA_OPTS=" $JAVA_OPTS -verbose:gc" export JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true" export JAVA_OPTS=" $JAVA_OPTS -Dorg.jboss.resolver.warning=true" export JAVA_OPTS=" $JAVA_OPTS -Dsun.rmi.dgc.client.gcInterval=3600000 " export JAVA_OPTS=" $JAVA_OPTS -Dsun.rmi.dgc.server.gcInterval=3600000" export JAVA_OPTS=" $JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,com.javaservice" export JAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless=true" export JBOSS_BASE_DIR="$DOMAIN_BASE_DIR" export JAVA_OPTS=" $JAVA_OPTS -Djboss.server.base.dir=$DOMAIN_BASE" export JAVA_OPTS=" $JAVA_OPTS -Djboss.socket.binding.port-offset=$PORT_OFFSET" export JAVA_OPTS=" $JAVA_OPTS -Djboss.node.name=$NODE_NAME" export JAVA_OPTS=" $JAVA_OPTS -Djboss.bind.address.management=$MGMT_ADDR" export JAVA_OPTS=" $JAVA_OPTS -Djboss.bind.address=$BIND_ADDR" export JAVA_OPTS=" $JAVA_OPTS -Djboss.server.log.dir=$JBOSS_LOG_DIR" # Encoding Setting echo "================================================" echo "JBOSS_HOME=$JBOSS_HOME" echo "DOMAIN_BASE=$DOMAIN_BASE" echo "SERVER_NAME=$SERVER_NAME" echo "CONFIG_FILE=$CONFIG_FILE" echo "BIND_ADDR=$BIND_ADDR" echo "PORT_OFFSET=$PORT_OFFSET" echo "CONTROLLER_IP=$CONTROLLER_IP" echo "CONTROLLER=$CONTROLLER_IP:$CONTROLLER_PORT" echo "JBOSS_LOG_DIR=$JBOSS_LOG_DIR" echo "================================================" |
- start.sh 파일 생성
- root@wildfly1:/app/domains/sample# vi start.sh
#!/bin/bash DATE=`date +%Y%m%d%H%M%S` . /app/domains/sample/env.sh PID=`ps -ef | grep java | grep "=$SERVER_NAME " | awk '{print $2}'` echo $PID if [ e$PID != "e" ] then echo "JBoss SERVER - $SERVER_NAME is already RUNNING..." exit; fi UNAME=`id -u -n` if [ e$UNAME != "e$JBOSS_USER" ] then echo "Use $JBOSS_USER account to start JBoss SERVER - $SERVER_NAME..." exit; fi echo $JAVA_OPTS if [ ! -d "$JBOSS_LOG_DIR/nohup" ]; then echo "nohup log-------------------------------------------" mkdir -p $JBOSS_LOG_DIR/nohup fi if [ ! -d "$JBOSS_LOG_DIR/gclog" ]; then mkdir -p $JBOSS_LOG_DIR/gclog fi if [ ! -d "$JBOSS_LOG_DIR/heapdump" ]; then mkdir -p $JBOSS_LOG_DIR/heapdump fi mv $JBOSS_LOG_DIR/nohup/$SERVER_NAME.out $JBOSS_LOG_DIR/nohup/$SERVER_NAME.out.$DATE nohup $JBOSS_HOME/bin/standalone.sh -DSERVER=$SERVER_NAME -c $CONFIG_FILE >> $JBOSS_LOG_DIR/nohup/$SERVER_NAME.out & if [ e$1 = "enotail" ] then echo "Starting... $SERVER_NAME" exit; fi sleep 3 tail -f $JBOSS_LOG_DIR/server.log |
- stop.sh 파일 생성
- root@wildfly1:/app/domains/sample# vi stop.sh
#!/bin/bash . /app/domains/sample/env.sh UNAME=`id -u -n` if [ e$UNAME != "e$JBOSS_USER" ] then echo "Use $JBOSS_USER account to stop JBoss SERVER - $SERVER_NAME..." exit; fi JPID="`ps -ef | grep java | grep "\-DSERVER=$SERVER_NAME" | awk '{print $2}'`" if [ -z "$JPID" ]; then echo "=====================================" echo "$SERVER_NAME is not running" echo "=====================================" else #ps -ef | grep java | grep "\-DSERVER=$SERVER_NAME" | awk {'print "kill -9 " $2'} | sh -x $JBOSS_HOME/bin/jboss-cli.sh --controller=$CONTROLLER_IP:$CONTROLLER_PORT --connect --commands=shutdown $@ echo "=====================================" echo "$SERVER_NAME is shutdown by $UNAME" echo "=====================================" fi |
- kill.sh 파일 생성
- root@wildfly1:/app/domains/sample# vi kill.sh
kill -9 `ps -ef|grep sample|grep -v grep|cut -c10-16` |
- cli.sh 파일 생성
- root@wildfly1:/app/domains/sample# vi cli.sh
#!/bin/bash . /app/domains/sample/env.sh export JAVA_OPTS=" -Djava.awt.headless=false $JAVA_OPTS" $JBOSS_HOME/bin/jboss-cli.sh --controller=$CONTROLLER_IP:$CONTROLLER_PORT --connect $@ |
- 실행 권한 부여
- $ chmod 777 *.sh
- 소스배포 경로 지정
- $ cd /app/domains/sample/configuration [환경설정 폴더로 이동]
- vi standalone-ha.xml [환경설정파일 편집]
545 <server name="default-server"> 546 <ajp-listener name="ajp" max-post-size="1073741824" socket-binding="ajp"/> 547 <http-listener name="default" max-post-size="1073741824" socket-binding="http" redirect-socket="https" enable-http2="true"/> 548 <https-listener name="https" max-post-size="1073741824" socket-binding="https" ssl-context="applicationSSC" enable-http2="true"/> 549 <host name="default-host" alias="localhost"> 550 <location name="/" handler="welcome-content"/> 551 <http-invoker http-authentication-factory="application-http-authentication"/> 552 </host> 553 </server> |
546 라인,547,548 라인 max-post-size="1073741824"
옵션 추가 첨부파일 업로드시 기본이 10메가임, 더 큰 용량의 파일을 올리면 에러가 발생함
1기가로 용량 추가 했음 더 큰파일을 올릴려면 숫자를 더 크게 계산해서 넣어주면 됨, 단위는 바이트 임.
맨 아래에 소스 배포 경로 추가
<deployments> 608 <deployment name="sample.war" runtime-name="sample.war"> 609 <fs-archive path="/app/wildfly/was"/> 610 </deployment> 611 </deployments> 612 613 </server> |
/app/wildfly/was 경로에 작업한 소스를 배포한다.
'IT > 프로그램' 카테고리의 다른 글
아파치 Wildfly 연동 (0) | 2024.01.30 |
---|---|
Wildfly 테스트 소스 작업 (0) | 2024.01.29 |
톰캣 세션 공유 설정 (0) | 2024.01.29 |
톰캣2번 서버 아파치 연동 설정 (0) | 2024.01.29 |
톰캣 환경 셋팅 (0) | 2024.01.29 |