앞에서 생성한 EC2 인스턴스를 ssh로 실행할 것이다.
키페어 권한변경
터미널에서 ssh로 ec2를 접속할 때 보안그룹을 생성할 때 다운받은 키페어를 사용해서 들어가야 한다. 그런데 바로 실행하면 키페어의 권한때문에 접속이 되지 않을 것이다. 키페어의 권한을 바꿔주는 명령어를 입력해두자.
1 | $ chmod 600 key.pem |
ec2인스턴스 ssh진입
ec2 인스턴스 접속에 필요한 주소가 2개 있다.
우선 접속에 필요한 키페어의 경로가 필요하다.
그리고 우리가 들어갈 인스턴스의 IPv4 퍼블릭 IP 주소를 복사해두자.
아래 명령어에서 방금 복사한 퍼블릭 ip주소를 붙여넣어서 터미널에 명령하면 된다.
1 | $ ssh -i [키페어 경로] ec2-user@[public ip 주소] |
혹시나 계속 진행할 것인지 묻는 메세지가 출력된다면 yes를 입력하고 엔터를 입력하면 위의 이미지처럼 인스턴스 내부로 진입이 완료된다.
만약 권한 이슈가 계속 발생한다면, 커맨드 명령어를 잘못입력했거나 키페어의 권한설정이 잘못되었을 수 있다. 위로 올라가서 다시 천천히 설정해보자.
JDK 설치하기
아마존 리눅스에는 기본적으로 jdk가 설치되어 있긴하나 1.7버전이 설치되어 있을 것이다. 따라서 명령어로 1.8 버전의 jdk를 설치하고, 사용하지 않을 구버전의 jdk는 삭제할 것이다.
먼저 1.8 버전의 jdk를 설치하자.
1 | $ sudo yum install -y java-1.8.0-openjdk-devel.x86_64 |
이제 jdk 버전을 방금 설치한 1.8버전으로 변경한다.
1 | $ sudo /usr/sbin/alternatives --config java |
+가 바라보는 곳이 현재의 자바 버전이다. 변경하고자 하는 버전의 숫자를 입력하면 해당 버전으로 자바가 변경된다.
이제 사용하지 않을 버전의 jdk는 삭제하자.
1 | $ sudo yum remove java-1.7.0-openjdk |
프로젝트 클론하기
아마존 리눅스에서는 yum
이라는 패키지 툴을 이용할 것이다. git을 설치하기 전 패키지 툴을 최신버전으로 업데이트하고, git을 설치할 것이다.
1 | $ sudo yum update |
약 10초가 조금 지나면 설치가 완료된다.
그리고 프로젝트가 저장된 깃허브 웹페이지로 가서 https주소를 가져오자.
이 주소로 ec2 인스턴스 내부에서 클론하면 된다. 프로젝트를 가져올 디렉토리를 먼저 생성하자. 필자는 /home/ec2-user
디렉토리 내부에 app
폴더를 생성해서 이 안에 프로젝트를 가져올 것이다.
1 | $ git clone [git-clone-https-address] |
메이븐 빌드하기
이 프로젝트는 빌드 툴로 메이븐을 사용한다. 메이븐을 이용해 프로젝트를 빌드해서 jar파일을 생성해보자.
메이븐도 권한을 변경하고 빌드한다.
1 | $ chmod +x ./mvnw |
처음 프로젝트를 빌드하는데는 시간이 좀 걸릴 것이다. 대략 2-3분 정도의 시간이 소요될 수 있다. 다음에 다시 빌드를 할 때는 이정도로 소요되지는 않는다.
빌드가 완료되면 다음과 같은 성공 메세지를 볼 수 있다.
만약 빌드에 실패한다면, jdk 이슈일 가능성이 높다. jdk가 설치되어 있지 않거나, 프로젝트에서 사용한 자바 버전과 다르기 때문일 것이다.
jar 파일 실행
위에서 메이븐으로 빌드했다면, jar파일은 /target
디렉토리 안에 생성됬을 것이다.
1 | $ java -jar target/ .jar |
스프링 로고가 출력되고 마지막에 Started 프로젝트명 in seconds
메세지가 출력된다면 이제 배포가 성공적으로 마친 것이다. 웹 브라우저로 가즈아!
ec2 인스턴스를 생성할 때 보안그룹설정에서 custom TCP 프로토콜에 설정한 포트로 접속하면 된다. ec2 인스턴스 퍼블릭 ip주소에 위의 포트번호를 입력하면된다.
1 | [public-dns-ip]:8080 |
그럼 브라우저에서 프로젝트를 볼 수 있을 것이다. 혹시 프로젝트가 열리지 않는다면, 포트번호 맵핑이 잘못되었을 확률이 있다. 그렇다면 보안그룹을 다시 살펴보자.
EC2 대시보드에서 [작업] 버튼을 클릭해서 EC2 인스턴스와 관련된 여러가지 설정을 변경할 수 있다.