필요 요소 구성

 📌  1. EC2  인스턴스 

- ubuntu로 아키텍쳐 64비트, t2.micero 프리티어 서버가 하나 있어서 그걸 사용

(아래 포스팅 때 만들걸 사용)

 

000 - 웹개발 종합반 5주차 (AWS)

5-1 / 5주차 오늘 배울것 버킷리스트 프로젝트로 복습 팬명록을 클라우드 환경에 배포해보기 파일질라 설치하기 : 클라우드 환경에 파일을 올릴 수 있는 프로그램 가비아에서 도메인 구입 5-2 / [

littlezero48.tistory.com

📍 다만, EC2에 태그 설정이 되어있지 않다면 추가적으로 태그 설정 처리

 

 

 📌  2. 키 페어 

- EC2 생성할때 만든거 가지고 있어서 그걸 사용

 

 

📌  3. IAM 사용자 생성 

AWS에서 IAM를 검색

검색 아래에 작은 이모티콘은 검색에서 즐겨찾기 해놓은 것. 없다면 검색해서 찾자.

권한 정책에서

  • AmazonEC2FullAccess
  • AmazonS3FullAccess
  • AWSCodeDeployFullAccess

세개를 조회해 체크하고 다음을 누른다 

 

추가한 3가지 확인한 다음 사용자 생성 클릭

 

 

📌  4. IAM 액세스 키 생성 

 

************* 액세스 키는 생성하면 그 순간에만 볼 수 있고 다운받을 수 있다. 다운받아 잘 보관해두자.

 

 

📌  5. IAM 역할 생성 - EC2 용 

📍 1단계

📍 2단계

  • AmazoneS3FullAccess
  • AWSCodeDeployFullAccess

검색해서 체크

📍3단계 

역할 이름 설정과 추가한 권한만 체크하고 역할 생성

 

📍 EC2 인스턴스 가서 IAM 설정

작업 > 보안 > IAM 역할 수정

 

 

📌  6. IAM 역할 생성 - Code Deploy 용

역할을 한개 더 생성해야 한다.

사용사례와 이름만 설정하고 역할 생성 클릭

 

 

 📌  7. EC2  셋팅

EC2 접속!

📍 home/ubuntu/ 위치에 app폴더 생성

 

📍 apt 업데이트하고 패키지들 설치

- 1) apt 업데이트 apt은 ubuntu 패키지 관리 툴

- 2) ruby-full 설치 : 프로그래밍 언어인 ruby를 설치 (중간에 설치를 계속할껀지 물음 / 중간에 보라색화면 나오면 선택사항이 하나인 화면은 Enter 넘어가고 뒤에 뭔가 여러가지 사항이 나오는 화면은 tap을 이용해 ok로 이동해서 enter누르면 이미 자동으로 선택된 사항에 대해서 적용해 재시작한다.) 

- 3) wget 설치 : HTTP/FTP를 사용해서 서버에서 파일을 내려받기 위한 오픈소스

sudo apt update
sudo apt install ruby-full
sudo apt install wget

 

**** 참고: 이후 작업이 apt으로 안되서 dpkg(데비안 패키지)로 설치

📍 Code Deploy Agent 다운

- 1) wget 사용해 Codedeloy서버 URL에서 codedeploy-agent_1.3.2-1902_all.deb 을 다운

(dep은 우분투에서 파일 패키지 프로그램으로 설치가 가능한 파일, 저 Url은 각자 주소 아니고 설치 파일받는 공통주소인데 아시아 태평양(서울) 지역 기준 )

- 2) 폴더 하나를 생성

- 3) dpkg-deb은 deb파일을 명시한 폴더에 파일시스템 트리 그대로 풀어둔다.

(-R 옵션은 --recursive 옵션과 동일한 것으로 단어 뜻은 재귀를 의미한다. 이 옵션은 앞의 명령어를 해당 디렉토리 뿐만 아니라 그 디렉토리에 포함된 하위 디렉토리에도 모두 적용시키는 옵션이다)

wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/releases/codedeploy-agent_1.3.2-1902_all.deb
mkdir codedeploy-agent_1.3.2-1902_ubuntu22
dpkg-deb -R codedeploy-agent_1.3.2-1902_all.deb codedeploy-agent_1.3.2-1902_ubuntu22

 

📍 루비 3.0으로 사용할 수 있게 dep파일 dependency 수정해서 빌드하고 설치

- 1) sed : Stream Editor의 약자로 명령어로 원본 텍스트 파일을 편집하는 명령어. 맨 뒤에 지정한 파일을 가져와 앞에 ''(작은따옴표) 안의 내용으로 수정하여 -i 옵션을 통해 수정을 반영한다. (디펜던시를 수정해 ruby 3.0으로 적용)

- 2)  -b는 --build와 똑같은 옵션으로 지정한 폴더를 deb 패키지로 빌드한다.

- 3) 지정한 deb파일을 설치 (-i 옵션은 인스톨 옵션)

sed 's/Depends:.*/Depends:ruby3.0/' -i ./codedeploy-agent_1.3.2-1902_ubuntu22/DEBIAN/control
dpkg-deb -b codedeploy-agent_1.3.2-1902_ubuntu22/
sudo dpkg -i codedeploy-agent_1.3.2-1902_ubuntu22.deb

 

📍 확인

- 1) 서비스 목록 중 타입이 service이면서 codedeploy가 포함된 목록을 조회

( systemctl는 systemd(system daemon)을 관리하는 명령어 

list-units은 서비스 목록 보는 명령어로 뒤에 붙는 옵션으로 필터링해서 조회가 가능하다 )

- 2) codedeploy-agent의 상태를 조회한다.

(service 명령어는 등록된 서비스를 관리하는 명령어로 service [서비스명] 에 start / stop / restart / status 등의 옵션을 더해 시작, 중지, 재시작, 상태조회를 할 수 있다.)

systemctl list-units --type=service | grep codedeploy
sudo service codedeploy-agent status

위와 같이 상태를 확인 할 수 있게 됬다면 성공!

 

트러블슈팅 : apt으로 하는 방법이 아래와 같은 문제가 생겨 apt으로 진행하다가 문제가 생겨 dpkg로 진행. 아래 더보기글 내용은 이런일이 있었다~ 참고만 하세요-

더보기

📍 code deploy 설치 파일을 해당 url에서 다운 받음

wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install

 

📍install 폴더에서

- 1) install 폴더의 권한을 변경

- 2) 해당 폴더를 자동을 실행시켜 설치 진행

chmod +x ./install
sudo ./install auto

에러.... 

앗, Ruby version이 지금 3.0.2인데 필요한건 2.x 이라고 ㅠ

해결하는 방법은 EC2 인스턴스 자체를 낮추거나, 파일을 수정해서 Ruby 3.0을 쓸 수 있게 하는 방법 이 있는데

나는 후자를 선택

 

📌  8. 올릴 프로젝트에 맞는 환경 설정

프로젝트가 JDK 11버전을 사용하므로 11버젼 설치 및 확인

sudo apt-get install openjdk-11-jdk
java -version

 

 

📌  9.  CodeDeploy 

AWS에서 CodeDeploy를 검색 

AWS 서비스를 사용할 때는 항상 서버가 서울인지 확인!! 안그럼 일 2번해야 

 

📍 배포 > 애플리케이션 > 애플리케이션 생성

 

📍 배포 그룹 생성

 +  마지막에 로드 밸런서에 대한 선택할 수 있는 요소가 없어서 활성화 체크를 해제. 나중에 문제가 생기면 다시 수정

 

배포 그룹 생성 클릭하여 생성!

 

 


AWS에서 CD에 필요한 환경 설정은 여기까지고 다음 글 부터 github에 적용하는 방법과 프로젝트에 추가할 파일에 대해 정리.  

 

 


참조 자료 (아영님 고마워요): 

 

Github Actions CD: AWS EC2 에 Spring Boot 배포하기

Overview 애플리케이션을 개발하면 외부에서도 접근 가능하도록 클라우드 환경에 배포합니다. 이전에 포스팅 했던 AWS 1편에서는 마지막에 scp 명령어로 로컬에 존재하는 빌드 파일을 EC2 인스턴스

bcp0109.tistory.com

 

[SpringBoot] Github Action으로 AWS EC2 자동 빌드/배포하기(CI/CD)

[SpringBoot] Github Action으로 AWS EC2 자동 빌드/배포하기(CI/CD) 빗썸테크아카데미의 강의가 끝나고 팀프로젝트가 시작되었는데, 개발에 앞서 우선 aws에 배포해서 Hello world를 먼저 찍어보고 개발을 하

be-developer.tistory.com

 

CodeDeploy agent is not supporting ruby v3.0.1 · Issue #301 · aws/aws-codedeploy-agent

When I tried to install codedeploy agent on my server: $ bundle install Fetching gem metadata from http://rubygems.org/........... Resolving dependencies... Bundler found conflicting requirements f...

github.com

 

'DevOps > CI & CD' 카테고리의 다른 글

CI/CD] 자동 배포 관련 다양한 상태 확인 방법  (0) 2023.01.26
CI/CD] Properties 관리  (1) 2023.01.26
CI/CD] CodeDeploy - 적용 과정  (1) 2023.01.24
CI/CD] Github Actions CI  (0) 2023.01.20

+ Recent posts