[Tistory] AWS EC2 인스턴스에 백엔드 서버 구축하기

원글 페이지 : 바로가기

– 이 글은 aws ec2 인스턴스 생성 및 보안 그룹 설정을 모두 마쳤다는 가정 하에 진행됩니다. – 이 글은 다음 포스팅을 참고하여 작성되었습니다. https://velog.io/@jonghyun3668/SpringBoot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-EC2-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0 https://dabid.tistory.com/11 SpringBoot 프로젝트 EC2 배포하기 깃헙에 있는 프로젝트를 AWS EC2에 git clone을 통해 내려받아 jar 파일 빌드를 해보겠습니다.(EC2 인스턴스는 우분투로 진행합니다. 또한 따로 배포 시스템을 구축하지 않고 수동으로 배포하는것만 velog.io 0. AWS EC2 서버에 자바 설치하기 먼저 ec2에는 자바가 없기 때문에 자바를 설치합니다. 버전은 본인에게 맞는 버전으로 설치해주시면 됩니다. 제가 사용하는 버전은 17이기 때문에 17버전으로 설치하겠습니다. sudo apt install openjdk-17-jdk 1. 빌드 build.gradle 파일이 있는 폴더로 들어가서 빌드를 해줍니다. ./gradlew build 이 때, “. /gradlew: Permission denied” 라는 오류가 발생하면 다음 명령어를 실행해줍니다. chmod +x gradlew 빌드가 오류 없이 끝났다면 build와 libs 디렉토리가 생성되었습니다. 2. 빌드 파일 실행 libs 디렉토리로 들어가 다음 명령어를 실행합니다. nohup java -jar 파일명.jar & jar 파일을 백그라운드에서도 계속 실행시키는 명령어기 때문에, 인스턴스 최초 실행 후에 한번만 실행하면 됩니다. 3. 서버 접속 이후 이 프론트엔드단과의 연결을 하기 위해서는 인스턴스의 ” 퍼블릭 IPv4 주소” 혹은 ” 퍼블릭 IPv4 DNS”에 연결하면 됩니다. EC2 서버 배포 과정 중 생겼던 문제점 1. 빌드 파일 까지 실행했지만 서버 연결이 안됐던 문제 필자의 문제는 보안그룹의 문제였다. 인바운드 규칙으로 TCP, SSH, HTTP, HTTPS가 추가된 새 보안 그룹을 생성하고, 그 보안 그룹을 인스턴스에 적용해야 한다. 그런데 새 보안 그룹을 생성하고 적용을 안한 것이 문제였다. 보안 그룹 생성 및 적용 방법은 다음과 같다. 1 – 1. 보안 그룹 생성 1. EC2의 네트워크 및 보안의 보안 그룹에 들어가 오른 쪽 위 보안그룹 생성을 한다. 2. 새 보안 그룹의 이름 및 설명을 작성한다. 3. 인바운드 규칙을 위 사진과 같이 추가한다. 이 때 설명에는 한글이 들어갈 수 없으니 영어로 적어줍니다. 1 – 2. 보안 그룹 적용 1. 작업 -> 보안 -> 보안그룹 변경 2. 보안 그룹 선택 -> 본인이 생성한 보안그룹 선택 3. 보안그룹 추가 4. 저장 2. 인스턴스에 SSH 클라이언트로 연결시 권한 오류 EC2 인스턴스에 연결하는 방법은 AWS에서 제공하는 EC2 Instance Connect를 사용하여 연결할 수 있지만 SSH 클라이언트를 통해서도 연결할 수 있다. SSH 클라이언트란 원격 컴퓨터에 연결하기 위한 Secure SHell 프로그램을 말한다. 대표적인 프로그램으로는 PuTTY, MobaXTerm 등이 있다. 그러나 AWS에서 알려주는 방식대로 SSH 클라이언트를 이용하여 연결하는 과정에서 chmod 400 “sshKey.pem”을 실행하면 Permission denied라는 오류가 발생했다. 이는 파일의 접근 권한이 없는 오류기 때문에 다음 명령어를 실행하여 해결했다. # cmd에서만 가능 # pem파일이 있는 폴더에서 실행해야 함 icacls.exe 파일명.pem /reset icacls.exe 파일명.pem /grant:r %username%:(R) icacls.exe 파일명.pem /inheritance:r

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다