본문 바로가기
Cloud Services/AWS

Chapter 3. Back-end 배포

by 더 이프 2023. 6. 29.
728x90

목차

    1. git으로 배포

     EC2 생성

    1. AWS 로그인 
    2. 서비스 ➡ 컴퓨팅 ➡ EC2 클릭
    3. 보안그룹 ➡ 보안그룹 생성
    4. 보안 그룹 이름, 설명 설정
    5. 인바운드 규칙 추가
    6. 보안 그룹 생성
    7. 인스턴스 ➡ 인스턴스 시작(추가)
    8. 이름 설정
    9. 애플리케이션 및 OS 이미지 ➡ Ubuntu 선택 ➡ 20버전 선택
    10. 키 페어 생성
    11. 보안그룹 ➡ 기존 보안그룹 선택 ➡ test, default 선택
    12. EBS 볼륨의 최소 8GB 설정(프리티어로는 인스턴스 3개 생성 가능)
    13. 인스턴스 생성
    14. 인스턴스 상태 검사 ➡ 검사 통과(SSH 접속 가능)

    git clone 설정

    1. 해당 인스턴스 클릭 ➡ 작업 ➡ 연결
    2. 연결 후 명령어 입력
    3. sudo apt update(최신 상태로 업데이트)
    4. 파일을 보내기 위해 jdk과 git 설치
    5. sudo apt install openjdk-11-jdk(jdk11 설치) ➡ y 엔터하여 계속 설치
    6. sudo apt install git ➡ git --version ➡ git 설치 확인
    7. git config --global user.name 깃허브 사용자명
    8. git config --global user.email 깃허브 이메일명
    9. git config --global user.name ➡ git config --global user.email ➡ 등록 확인
    10. git clone 프로젝트 깃 주소

    ■ 서버 실행

    1. ls로 현재 위치 확인 ➡ cd 이동할 폴더 ➡ mvnw.cmd가 나올 때까지 반복
    2. ./mvnw clean package -DskipTests ➡ sudo chmod 700 mvnw(앞이 실행 안될 경우 권한을 바꿈)
    3. BUILD SUCCESS가 뜨면 완료
    4. ls로 target 폴더 생성 확인 ➡ cd target ➡ ls로 jar 파일 확인
    5. java -jar jar파일 이름
    6. 서버 실행 완료
    7. 인스턴스 ➡ 인스턴스 상태 ➡ 인스턴스 종료 시 삭제

     

    2. 도커로 배포

    ■ Docker 설치 및 Spring boot 설정

    1. 구글에 Docker 검색
    2. Docker Desktop 설치
    3. Docker Desktop 실행 시 해당 에러 발생시 x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 설치
    4. sts4 실행 ➡ 해당 프로젝트 우클릭 ➡ New ➡ File ➡ Dockerfile 생성
    5. 구글에 Spring boot docker 검색 ➡ Dockerfile 내용 복사 ➡ Dockerfile 내용 붙여넣기
    6. jdk 버전 11로 변경 후 저장

    ■ Docker hub에 연결

    1. 구글에 Docker hub 검색
    2. Docker hub에서 repository 생성
    3. 해당 프로젝트 폴더 내에서 git bash 열기 ➡ ./mvnw clean package -DskipTests실행
    4. docker build --build-arg JAR_FILE=target/*.jar -t myorg/myapp .
      (myorg: docker hub repository 사용자명, myapp: docker hub repository명)
    5. docker run -p 8080:8080 myorg/myapp(docker image를 실행)
    6. 서버 실행(여기까지 localhost)
    7. git bash 재실행
    8. docker ps -qa(현재 실행중인 컨테이너명)
    9. docker rm -f $(docker ps -qa)를 통해 종료
    10. docker ps -qa로 실행중인 docker 컨테이너가 있는지 확인(아무것도 없으면 다 죽은 상태)
    11. docker push myorg/myapp(docker hub에 push)
    12. docker login으로 로그인 되어 있는지 확인
    13. docker hub에 push가 잘 되어있는지 확인

    ■ EC2 Ubuntu서버에 docker 설치 및 실행

    1. EC2 인스턴스 생성(앞의 EC2 생성과정을 그대로 진행) ➡ 인스턴스 생성 시 개수 2개로 생성(이름은 back_server)
    2. 탄력적 IP 2개 할당(EC2 인스턴스는 동적 IP라 IP를 고정하기 위해 탄력적 IP 사용)

    3. 탄력적 IP ➡ 작업 ➡ 탄력적 IP 주소 연결
    4. 연결할 인스턴스와 프라이빗 IP 주소 설정 후 연결
    5. 인스턴스 ➡ 해당 인스턴스 클릭 ➡ 연결
    6. sudo apt update(패키지 업데이트)
    7. sudo apt install apt-transport-https ca-certificates curl software-properties-common(https 관련 패키지 설치)
    8. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -(docker repository 접근을 위한 gpg 키 설정)
    9. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"(docker repository 등록)
    10. sudo apt update(다시 업데이트)
    11. sudo apt install docker-ce(도커 설치)
    12. docker --version(설치 확인)
    13. sudo usermod -aG docker ${USER}(현재 사용자를 docker group에 포함)
    14. 완료 후 연결 창 끄고 다시 재연결
    15. docker pull myorg/myapp
    16. docker run -p 8080:8080 myorg/myapp
    17. 프로젝트 실행 시 해당 오류가 발생 시 Dockerfile에 해당 코드를 추가
    18. 완료 후 해당 인스턴스의 탄력적 IP:8080으로 접속하면 서버가 켜져있는지 확인 가능

    ■ EC2 인스턴스 사용하지 않을 경우

    1. 인스턴스 ➡ 인스턴스 상태 ➡ 인스턴스 중지
    2. 탄력적 IP ➡ 탄력적 IP 주소 연결 해제 ➡ 탄력적 IP 주소 릴리스
      (사용하지 않는 탄력적 IP의 경우 비용이 발생하므로 사용하지 않는 탄력적 IP는 연결 해제 한 후 릴리스를 통해 제거를 해야 추가 비용이 발생하지 않음)

     

    출처

     

    [Docker] EC2 Ubuntu서버에 docker 설치하기

    이번 포스팅은 AWS EC2에 ubuntu서버를 올린 상태에서, docker를 설치하는 과정을 담았다. 우리는 이전에 AWS EC2 인스턴스를 생성하여 나만의 서버를 호스팅해보았다. Reference: https://velog.io/@kyj311/AWS-EC2-

    everydayyy.tistory.com