본문 바로가기
개발공부 개발새발/CICD

CD ) Tomcat 과 함께 자동 배포까지

by 휴일이 2024. 5. 10.

Step6. Tomcat 서버 설정

EC2 에 톰캣 서버 세팅

새 인스턴스를 만들고 Java 및 Tomcat 설치

yum install java-17

# Tomcat install 페이지에서 tar.gz 파일 링크 복사한 것
wget <https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.89/bin/apache-tomcat-9.0.89.tar.gz>

# 압축 풀기
tar -xvzf apache-tomcat-9.0.89.tar.gz

# 풀고 남은 파일 tomcat 디렉토리로 경로 변경해주기
mv apache-tomcat-9.0.89 tomcat

# 해당 디렉토리 안에 있는 startup.sh 이 톰캣 실행 스크립트다.
cd tomcat/bin
  • publicIP:8080 으로 접속해보면..

  • 우와 톰캣 서버다!
  • 하지만 여기에서 Manager App (관리자 페이지) 에 접속하려고 하면 안 됨.
  • 기본적으로 Manager App 은 톰캣이 실행되는 로컬 브라우저에서만 접속 가능..
  • xml 파일을 수정해서 다른 머신에서도 접근 가능하게 해주자

관리자 페이지 접속을 위해 xml 파일 수정하기

cd opt/tomcat

# context.xml 파일 찾기
find / -name context.xml

---
# 결과물
# 여기에서 마지막 두 줄 (host-manager, manager) 을 수정해줘야 한다.
/opt/tomcat/conf/context.xml
/opt/tomcat/webapps/docs/META-INF/context.xml
/opt/tomcat/webapps/examples/META-INF/context.xml
/opt/tomcat/webapps/host-manager/META-INF/context.xml
/opt/tomcat/webapps/manager/META-INF/context.xml
---

 

  • 기존엔 이렇게 127.0.0.0 로컬호스트만 접속을 허용한다.

  • 이 부분을 주석처리해주자 ^ㅅ^/

톰캣 재시작

cd tomcat/bin

# 서버 중단
./shutdown.sh
# 서버 시작
./startup.sh

유저 권한 주기(관리자 유저 설정)

cd opt/tomcat/conf

# 여기에서 유저를 추가해주면 된다.
vi tomcat-users.xml

---
# 난 이렇게 만들어줬당.
 <role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <user username="admin" password="admin" roles="manager-gui, manager-script, manager-jmx, manager-status"/>
 <user username="deployer" password="deployer" roles="manager-script"/>
 <user username="tomcat" password="s3cret" roles="manager-gui"/>
---

서버 시작 편하게 하기

ln -s /opt/tomcat/bin/startup.sh /usr/local/bin/tomcatup
ln -s /opt/tomcat/bin/shutdown.sh /usr/local/bin/tomcatdown
  • 지금은 일일히 startup.sh 가 있는 경로에 접속해서 실행해줘야하는데..
  • 이렇게 기본 디렉토리 /usr/local/bin 에서 tomcatup 명령어를 쓰면 해당 스크립트가 실행될 수 있도록 설정하면 이제 쉽게 서버를 재시작할 수 있당!
tomcatdown
tomcatup

관리자 페이지 접속

  • 우리가 설정했던 username , password 를 입력하면 이제 관리자페이지로 접속 가능하다!

Tomcat 과 Jenkins 통합하기

Jenkins 에 플러그인 설치

  • Deploy to container 플러그인을 이용해 빌드 후에 war 파일을 배포시키자 ^ㅅ^

자격증명 설정

  • Credentials → System → Global credentials → Add Credentials
  • 새 자격 증명을 추가하자.
<user username="deployer" password="deployer" roles="manager-script"/>
  • 기존 자격증명 중 deployer 권한을 추가해주자.
  • 이 친구의 manager-script 권한은
    • 한 시스템이 다른 시스템에 접근하고자 할 때 사용한다.

새 아이템 추가하고 배포해보기 (feat. tomcat)

 

  • 빌드 후 조치에서 Deploy war/ear to a container 설정을 해준다.

WAR/EAR files

  • war 파일의 경로를 지정해주면 되는데, workspace root 경로 부터 시작하기 때문에 /webapp/target/webapp.war 라고 지정해줘도 되지..만
  • **/*.war 라고 지정하면 젠킨스가 알아서 war 파일을 찾는다.

Containers

  • Tomcat 8.x Remote 를 사용한다. (9 버전은 플러그인 이슈가 있다고 함)
  • URL 은 우리 톰캣 서버 접속(Public)IP:8080 을 넣어준다.

톰캣 서버 접속해보기

  • publicIP:8080/webapp 에 접속하면 해당 페이지가 뜬다. ㅎㅅㅎ/
  • 정상 접속 완료 😉

Step7. 톰캣 서버로 아티팩트(war) 배포해보기

소스 코드를 업데이트해보고 커밋 후 jenkins 가 maven 으로 빌드하고 tomcat 으로 배포하게 해보자.

  • index.jsp 내용을 바꾸고 커밋 후 master 브랜치에 push
  • Jenkins 에서 빌드하기.

  • 정상 빌드 완료!

  • 새 코드로 업데이트 된 것을 확인할 수 있다.

Step7. 빌드 자동화

트리거를 일으켜서 빌드시키기

Poll SCM

  • repository 에 변화가 있으면 주기적으로 pull 하는 방식이다. (주기 설정 가능)
  • Schedule 에 주기를 써넣으면 됨.
  • 이제 새로운 커밋을 하고 git 에 push 하면?

  • 1분정도 기다리면 세 번째 빌드가 자동으로 시작! 성공적으로 완료됐음을 확인 가능 !
    • 단, 변화가 있었는데 → 그 빌드가 실패하면 해당 변경점으로는 다시 당겨오지 않음.
    • 변화가 있던 단 한 번만 빌드.
728x90