EC2에 스프링 프로젝트 업로드📤

‍서지오·2022년 9월 8일
post-thumbnail

구현 과정🚊

1. WinScp를 통한 nginx에 템플릿 업로드

1-1. nginx 권한 설정

sudo chmod -R 777 /var/www
  • -R 옵션 : 지정한 폴더부터 모든 하위 폴더들의 권한을 수정

1-2. 템플릿 프로젝트 ec2에 업로드

  • Putty를 사용하여 다운받은 템플릿 프로젝트 코드를 /var/www 경로에 드래그 앤 드랍

1-3. vi를 통해 nginx configuration 파일 수정

  • vi를 사용하여 서버의 root 위치를 다운받은 템플릿 프로젝트를 가리키게 수정한다.

2. IntelliJ에 EC2 연결

2-1. Server 생성(SFTP 프로토콜 사용)

  • Root path : ec2에서 설정한 서버의 root 폴더 경로 입력
  • Web server URL : 이전에 구입한 도메인 url 입력

2-2. SSH configuration 설정

  • Host : AWS IP 주소 입력
  • Username : 우분투 사용 시 ubuntu 입력
  • Private key file : 인스턴스 생성 시 발급 받은 key pair(.pem)

2-3. application.yml 수정

  • url : jdbc:mysql://rds 엔드포인트/사용할 db 이름
  • autoReconnect=true : 스프링에서 자체적으로 DB를 오랫동안 사용하지 않으면 연결을 끊는 경우가 생기는데 이를 해결해주는 옵션
  • 인텔리제이에서 파일 변경 시 오른 쪽 위에 있는 화살표 버튼을 클릭해주면 원격에 변경 사항을 반영해준다.

3. Gradle build

3-1. Swap file을 사용하여 EC2 인스턴스에 메모리 할당

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16 # swap 메모리를 할당
$ sudo chmod 600 /swapfile #스왑 파일 권한 설정
$ sudo mkswap /swapfile #스왑 영역 설정
$ sudo swapon /swapfile #스왑 공간에 스왑 파일 추가
$ sudo swapon -s #스왑 영역에 스왑 파일이 잘 추가 됐는지 확인
$ sudo vi /etc/fstab #/etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화
$ free #메모리 할당 확인
💡 AWS 프리티어 계정 사용 시 스프링 프로젝트의 Gradle을 build할 경우 메모리가 부족한 경우가 발생하여 빌드하는 도중에 시스템이 멈추게 된다. 이를 해결하기 위해 **Swap File**을 사용하여 인스턴스에 추가 메모리를 할당해준다.

3-2. Gradle build

$ ./gradlew clean build
  • 스프링 프로젝트의 Gradle을 build

3-3. build한 jar 파일 실행

$ java -jar build/libs/demo-0.0.1-SNAPSHOT.jar

3-4. 실행 결과


4. Post man을 사용한 테스트

4-1. 인바운드 규칙 추가(9000번 포트)

4-2. Post man으로 test api 호출


5. SSL 인증

  • 일반적으로 Backend Language에 접근할 경우에는 80(HTTP) 포트나 443(HTTPS) 포트로 서버 프로그램을 거쳐와야 한다.
  • 하지만 현재는 9000번 포트로 Backend Language로 직접 들어오기 때문에 SSL 인증 을 거치지 않아 보안에 취약하여 추가 작업(Proxy Pass)이 필요하다

5-1. Proxy Pass 사용

  • proxy_pass : 프록시 서버 URL을 지정하는 역할, 도메인 이름 또는 IP 주소로 HTTP 또는 HTTPS를 사용할 수 있도록 한다.

    • 클라이언트가 URL이 ‘/’로 시작하는 주소로 nginx에 접근하면 9000번 port에서 실행되고 있는 server의 결과 값을 return
  • vi를 사용하여 서버의 root 위치를 다운받은 템플릿 프로젝트를 가리키게 수정한다.


profile
백엔드 개발자를 꿈꾸는 학생입니다!

0개의 댓글