AWS로 서비스 배포하기(1)_.jar파일을 AWS서버에 GitHub와 연동하여 배포하기

2021. 8. 18. 01:34컴퓨터과학

반응형

◎개념

Client(브라우저)에서 서비스를 사용하기 위해 Server에 Request한다.

그러기 위해 Server에 서비스가 배포되어야 한다. (웹서비스의 IP, Port번호를 외부에서 참조할 수 있게 한다)

 

cf) Socket은 IP와 PORT번호를 가지고 통신을 수행한다. 

- IP주소는 0~255범위의 수를 나열해 255.0.0.1과 같이 표현되는 논리적 고유번호. 통신을 위한 논리적 주소. 컴퓨터주소.

- PORT주소는 0~232341범위의 수, Process(Program)마다의 고유 번호를 갖게되고, 해당 번호에 맞는 통신 요청을 주고 받는다.  웹서버.0~1024 : 시스템용 번호, 프로세스가 따로 할당받을 수 없음.

  - 서비스 사용을 위해 주소에 접근하는 방식 : http://[ip주소]:[port]/[index.html]      ex) http://localhost:8080/  

 

 

 

Server에는 운영체제가 있고 운영체제는 여러 프로세스를 실행한다.(여러 PORT번호를 갖는다, 각 사용되는 서비스마다 프로세스 포트번호에 할당된다.)

 

 

 

 

배포를 위한 큼직한 절차 둘

 

1. AWS에 OS환경 구성하기 : Ubuntu나 Linux를 주로 쓴다.

2. 서비스 배포하기 : 파일을 OS에 바로 올리거나 GitHub를 통해 OS로 연결하는 방법이 있다.

  - 서비스 파일은 .jar 혹은 .war파일이다.

 

 

 

 

 

◎ GitHub를 통해 OS 연결해 .jar파일로 배포하기.

1. GitHub에 저장소 생성하고, GitBash로 .jar파일이 있는 폴더 연결.

 - 해당 폴더에서 GitBash 실행해서 차례로 코드입력

 - GitHub 저장소에 공유 된 것 확인.

2. AWS 실행, Ubuntu운영체제 선택, 우분투 웹 실행

[팁]

- AWS 가입 시 체크카드나 신용카드를 입력해야하는데 돈은 안듬.

- 1년동안 무료로 사용할 수 있고 1년 후 시점에 인스턴스가 모두 중지된 상태가 아니면 비용이 들기 시작함.

  무료로 계속 쓰려면 탈퇴하고 재 가입 하면 된다고 함.

- OS는 ubuntu를 씀.(20.04버전) : 많이 쓰이기도 하고 '프리 티어'임.

  '프리 티어'는 무료라는 얘기이고 연습용으로 쓰기 좋음.

- 인스턴스를 만들고 새로 시작할 때 마다 IPv4주소가 달라짐.(유동IP).

- 배포시 퍼블릭 IPv4 DNS의 주소로 접근 가능.

  * '네트워크 및 보안 - 탄력적 IP설정'을 통해 고정IP를 사용할 수 있음. 하지만 비용이 듬.(인스턴스 꺼져있어도 돈나감)

 

[절차]

- EC2 클릭

- 인스턴스 탭 클릭

- 인스턴스 시작

- (1. AMI선택) Ubuntu 20.04서버 선택

- (2. 인스턴스 유형 선택) 프리 티어 사용 가능한 그룹의 인스턴스 유형 선택

- (7. 검토) 시작하기

- 새 키 페어 생성, 다운로드

  * 생성된 키 페어 파일(이름.pem)은 외부에 공유되지 않도록 주의해야 함.

키 페어 생성하기
기다리면 대기중 - 실행중 으로 상태가 바뀜.

 

우측 하단에 있는 퍼블릭 IP주소

 - 인스턴스 ID를 클릭하고 '연결'을 통해 Ubuntu Web의 Console창을 띄울 수 있음. 하지만 오류가 많이 나기때문에 다른 방법을 쓸 것임.

 

3. PuTTY 실행하기

- PuTTY는 OS에 인스턴스를 연결시키는 원격 제어프로그램. 

- https://putty.softonic.kr/ 푸티 다운로드/

 

[절차]

- 우선 PuTTY말고 PuTTYgen을 실행. -> Conversions탭 -> import key -> 앞서 받은 키 페어 파일 선택

- save private key(pem파일) -> ppk파일 형식으로 저장

- PuTTY 실행

  -> Session - AWS의 퍼블릭 IPv4주소Host Name에 적어줌

  -> Connection - SSH - Auth - Browse 누르고 방금 만든 ppk파일 선택

  -> Session - Saved Sessions 이름 아무거나 적어주고 Save(안해도 되긴 함)

  -> open

 

- Security Alert가 뜨면 Accept를 눌러준다. (안뜰수도있음)

- 콘솔창이 나옴.. : Login As에 'ubuntu'를 입력해주고 엔터

[콘솔창에 작성할 코드]

- git clone [깃주소]

   ls하면 현 위치 폴더 및 파일 확인 가능. 파란색 글씨는 폴더를 의미.

- sudo apt-get update

   업데이트함

- sudo apt install openjdk-8-jdk 

   jdk 버전에 맞는걸로 다운

- java version : 현재버전 확인가능

- cd [프로젝트 폴더]

- sudo chmod 777 ./mvnw : 해당 파일에 대한 권한을 변환한다.(모든 사용자가 쓰기, 읽기, 실행의 권한을 받음)

  ls하면 해당 파일만 초록색으로 빛남.

- ./mvnw clean package

  build(jar파일 만드는 과정) 수행 (BUILD SUCCESS가 뜨면 됨

  ls하면 target폴더 생김

- cd target

- java jar [jar파일명].jar

  스프링실행되면서 배포가 완료됨.(외부에서 접속 아직 안됨)

 

4. AWS 인스턴스 창에서 PORT, IP의 허용규칙을 설정 : 외부에서 접속할 수 있게 하기
- 인스턴스 – 해당 인스턴스 ID 클릭 - 보안  보안그룹 값 클릭  edit inbound rules 클릭  규칙추가 : 포트번호(ex. 3000), CIDR블록 (0.0.0.0/0)

  인스턴스 프라이빗 ipv4주소에 :3000을 쓴 주소로 접속할 수 있게 됨.

 

 

 

- war 배포 끝 -

반응형