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
'개발공부 개발새발 > CICD' 카테고리의 다른 글
CI/CD ) Ansible 로 배포 자동화하기 ! (0) | 2024.05.14 |
---|---|
CI/CD ) Docker 와 함께 자동 배포하기 (0) | 2024.05.13 |
CI ) Jenkins 로 빌드 및 테스트 자동화하기 (0) | 2024.05.10 |
CI/CD ) CI/CD 가 뭘까 (0) | 2024.05.10 |