IT/DevOps

[linux] linux jboss eap 7.4 install, setting/ deploy

알 수 없는 사용자 2023. 12. 30. 19:06
반응형

목차

    리눅스에 jboss를 설치해서 웹 애플리케이션 배포한 경험을 기록한다.

    설치환경: redhat 8.8 64 bit

    설치경로: /home/계정/app 하위

    설치모드: standalone


    jboss는 standalone, domain 모드가 있는데 standalone모드는 단일 인스턴스로 각각 관리하는거고

    domain모드는 여러개의 인스턴스를 도메인이라는 그룹으로 관리하는 걸 의미한다.(내가 이해한바)

    jboss eap 설치파일 다운로드(로그인 필요)

     

    JBoss Enterprise Application Platform | Red Hat Developer

    Modular, cloud-ready Java EE 8 platform with APIs and development frameworks for quickly developing secure and scalable Java EE applications.

    developers.redhat.com

    압축해제

    설치경로에 zip파일을 업로드 후 압축 해제한다.

    unzip jboss-eap-7.4.zip

    설정 변경(접속 허용)

    외부에서 접속할 수 있도록 아래 설정을 변경한다.(처음에는 로컬에서만 접근 가능하도록 되어 있음)

    vi ~/app/jboss-eap-7.4/standalone/configuration/standalone.xml

    여기서는 모든 IP 접근 허용으로 했지만 실 운영환경에서는 상황에 맞게 변경해야 한다.

    관리자 모드도 외부에서 접속할 수 있도록 전부 허용했다.

    jboss 서비스 구동(백그라운드)

    cd jboss-eap-7.4/bin
    ./standalone.sh &

    jboss 서비스 종료(참조용)

    cd jboss-eap-7.4/bin
    ./jboss-cli.sh --connect command=shutdown

    외부에서 접속 테스트

    아래처럼 인덱스 페이지가 뜨면 성공이다.

    Administration Console 클릭관리자 콘솔화면이 표시가 될텐데 초기계정은 보안상의 이유로 비활성화 되어 있어 만들어야 한다.

    계정 만들려면 bin 경로로 이동 후 아래 쉘을 실행한다.

    sh add-user.sh

    난 계정명을 "admin"으로 만들었는데 원래 있는 계정이라고 이미 있는데 진행할거냐고 물어본다.

    다른 admin 말고 다른 계정명으로 만들면 나오지 않을 듯 하다.

    계정, 비밀번호 입력 후 yes를 누르면 계정이 생성되고 관리자 계정 설명 파일에 아래처럼 내용이 작성된다.

    원래 주석처리 되어 있는 부분이 위처럼 활성화가 된다.(내가 만든 계정/비밀번호 해시값)

    다시 jboss 재기동 후 관리자 콘솔에 저 계정으로 로그인 하면 된다.

    관리자 콘솔에서 deployment?인가 그 메뉴를 통해 war파일을 올리면 배포가 된다.

    하지만 난 관리자 콘솔을 이용하지 않고 터미널로 배포했기에 그 부분은 캡처를 못했다.

    배포

    기본적으로 아래 배포경로에 war파일을 위치시키면 자동으로 인식해서 war파일을 읽어들인다.

    /home/계정/app/jboss-eap-7.4/standalone/deployments

     

    war파일 배포 후 8080 포트 호출 시 jboss의 인덱스 페이지가 표시되는데 이를 원치 않으면 설정파일의 아래 부분을 주석처리하면 된다.

    서버 로그

    tail -f ~/app/jboss-eap-7.4/standalone/log/server.log

    standalone모드인 경우 위 로그파일을 찍어보면 된다.

    사실상 여기까지만 하면 끝인데 내 경우는 war파일을 배포경로에 위치 시켜도 war파일의 압축이 풀리지 않았기에 특별하게 아래와 같은 방법을 통해 수동 배포 했다.

    war파일 업로드 후 jboss 구동하면 war파일이 배포경로에 application명.war라는 폴더가 생기고 그 하위에

    관련 폴더, 파일들이 생기는 것으로 알고 있었는데 내 경우는 war파일은 안 풀리고 그냥 application명.war.deployed라는 마커파일만 생겼었다.(ex: admin.war.deployed라는 마커파일)


    jboss의 배포 방식은 managed(jboss가 알아서 관리), unmanaged(사용자가 관리) 방식이 있다.

    managed 방식은 archive방식만 배포가능

    Exploded Archive방식(war파일을 푼 상태로 배포)


    내 경우는 Exploded Archive 방식이고 순서는 아래와 같다.

    마커파일 생성

    touch admin.war.deployed

    배포경로에 마커파일 생성(배포상태를 의미하는 파일), 원래는 배포 후 자동으로 생성된다.

    여기선 배포됨을 의미하는 .deployed로 만든다.

    war파일명의 폴더 생성

    애플리케이션.war라는 폴더를 생성 후 그 하위에 웹 소스들을 복붙한다.

    jboss 재구동

    이제 jboss를 재구동한다.(내 경우는 이렇게 해서 배포가 되었다.)

    그 후 배포해야 될 war파일이 2개라서 구글링 하다가 아래처럼 standalone 폴더를 복사 해서

    동일하게 하나 더 만들고 포트 등을 변경 후 start.sh을 아래처럼 수정해서 배포에 성공했다.

    #admin.war
    -Djboss.server.base.dir=/home/dev1/app/jboss-eap-7.4/standalone
    
    #portal.war
    -Djboss.server.base.dir=/home/dev1/app/jboss-eap-7.4/standalone2

    그런데 위 옵션처럼 standalone 경로를 설정하니 pid가 2개가 올라가는 문제가 생겨 아래처럼 시작 쉘을 변경했다.

    소스 수정 시 이제 admin.war폴더 밑의 파일들을 교체후 재구동하면 된다.

    전체 start.sh

    #!/bin/sh
    
    #vm 옵션
    JAVA_OPTS="-Dglobals.profiles.active=dev"
    
    echo "admin start."
    #jboss start(vm 옵션 전달, 표준 출력, 에러 무시)
    nohup ./standalone.sh -Djboss.server.base.dir=/home/dev1/app/jboss-eap-7.4/standalone $JAVA_OPTS 1>/dev/null 2>&1 &
    
    # 프로세스가 올라가는 동안 pid를 찾아서 pid를 찾으면 파일로 저장 후 반복문 종료
    while true; do
      #pid 찾는다.
      if ps aux | grep "java" | grep -v grep | grep "standalone" > /dev/null; then
        #마지막 pid를 변수에 치환 
        latest_pid=$(ps aux | grep "java" | grep -v grep | awk '{print $2}' | sort -n | tail -n 1)
        #pid 파일로 저장
        echo $latest_pid > admin_pid.txt
        break
      fi
      # 1초 대기 후 재시도
      sleep 1
    done
    
    #로그 출력
    tail -f ../standalone/log/server.log

    역시 기록을 통해 복기하니까 그리 어렵지 않은데 처음 시도 했을 때는 삽질을 역시 많이 했다.

    역시 기록을 해야 다음 번 시도 시 시간이 많이 단축된다.

    위 과정은 jboss 배포의 정석 방법은 아니고 구글링 해 파편화 된 정보를 통해 배포한 것이다.


    개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.

    틀린 점 있을 경우 댓글 부탁드립니다.

     

    [linux] linux start, stop shell template

    목차 start.sh jboss service를 구동하는 쉘 예시다. 서비스 구동 시 vm 옵션을 전달해서 백그라운드로 실행하고(표준 출력, 에러 무시) pid를 파일로 저장한다.(kill할 때 사용) #!/bin/sh #vm 옵션 JAVA_OPTS="-Dg

    yaga.tistory.com

    2023.12.30 - [IT/DevOps] - [WAS] jboss eap 7.4 ssl 적용 (feat. openssl)

     

    [WAS] jboss eap 7.4 ssl 적용 (feat. openssl)

    목차 jboss eap 7.4버전에서 openssl을 적용한 경험을 기록한다. openssl 키/인증서 생성 사전에 openssl 패키지는 설치되어 있어야 함 openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt java

    yaga.tistory.com

    반응형