이 사람은 굉장한 초짜입니다 따끔한 조언을 아끼지 말아주세요 👊
Spring 3를 공부하면서 내가 만든 아주 간단한 프로젝트를 서버에 올리는 방법을 알고싶었다.
그 이유는 로컬환경에서 Tomcat을 사용해서 테스트 할 때마다 공기보다 성능이 가벼운 맥북 Air로 프로젝트를 돌리다보니 노트북은 항상 뜨거운 고기불판이었기 때문이다🔥 막상 프로젝트 크기도 그렇게 크지 않았는데...
돈없는 대학생은 그저 눈물로 노트북 열을 식힐뿐...😇
기존에 거의 따라하기 식으로 배웠던 내 머릿속에는 관련된 지식이 있을리가 없었다. 머리에 든게 없었던 나에게 가장 먼저 들어온 것은 AWS EC2!
아마존에서 가상의 컴퓨터를 빌려준다니 눈이 돌아가지 않을 수가 없었다.
바로 AWS에 회원가입을 하고 메인 창에 들어서는 순간..
이.. 이게 뭐야..😐
단순히 컴퓨터 대여해준다! 소리만 듣고 무턱대고 들어왔는데 엄청나게 많은 서비스들이 보였다.
아무튼 EC2를 사용하고 싶었던 나는 맨땅에 헤딩을 시작했다...
나처럼 맨땅에 헤딩을 각오하면서 시작도 못하고있는 사람들을 위해서라도 AWS를 시작하는 과정을 기록으로 남겨두고자한다.
아직 미필인 내가 군대에 갔다와서 리마인드하기위한 글이기도하다😫
1. 연락처 정보 입력
우선은 회원가입부터 시작이다. 자신의 정보를 잘 적어주면 된다.
2. 카드 등록
다음은 카드 등록을 하게된다. 쓴만큼 돈이 나가는것이다.
아마존이 공짜로 컴퓨터를 빌려줄리가 없지.. 하지만 걱정하지마라 AWS에는 프리티어라는 것이 있다!
일종의 체험판 같은 시스템인데 1년간 얼마만큼의 자원은 공짜로 제공해주는 것이다. AWS가 무엇인지 체험해보고 기능을 알아가는 과정에 있어서는 충분하다고 생각한다.
3. 지원 플랜 선택
AWS에 입문하는 일개 대학생이기 때문에 기본 플랜을 선택하고 넘어갔다.
이걸로 회원가입은 끝이다.
가입 시 1달러가 지출되었다가 2주쯤 뒤에 돈이 다시 돌아오니 돈이 나갔다고 당황하지말자.
이제 EC2 인스턴스를 생성해보겠다.
AWS Management Console 서비스를 쭉 살펴보면 EC2 서비스가 있다.
해당 서비스로 들어가면 왼쪽위에 이런 화면이 보이는데 [인스턴스 - 인스턴스 시작]을 눌러 인스턴스를 만들어주자.
AMI를 선택하라고 한다.
그나마 조금 건드려라도 본 Ubuntu 16.04를 선택했다.
프리티어로 사용할 수 있는 t2.micro를 선택하고 [인스턴스 세부 정보 구성]으로 넘어간다.
그닥 설정할 내용이 없기에 스토리지 추가로 넘어간다.
스토리지는 30GB까지 설정할 수 있는데 30GB가 넘어가면.. 과금이 일어나기때문에 주의해서 설정하도록 한다.
8GB여도 충분히 체험할수있는 수준이기 때문에 8GB만 설정해뒀다.
앞서말한 30GB는 인스턴스들의 총 합 용량이기 때문에 20GB 2개만들어도 과금이다. 💰💰💰
태그는 넘어가고 마지막인 보안 그룹 구성으로 왔다.
각각의 포트에 접근 가능 여부를 설정한다.
보안에 매우 취약한 설정이지만 지금은 경험해보는게 먼저니 HTTP, HTTPS까지 다 열어버리겠다.
인스턴스 검토 후 시작하기로 인스턴스를 시작한다.
세계에 개방되어있는 보안그룹...
키 페어를 생성하라는 창이 뜬다.
새 키페어 생성을 하고 키페어 이름을 작성한다.
키 페어를 다운로드하고 인스턴스를 시작한다.
이 키페어는 해당 인스턴스에 접속하기 위해 반드시 필요한 집 열쇠같은 존재라고 이해하면 된다.🔑
잃어버리거나 외부에 노출되지 않도록 매우 조심해야한다.
잘못하면 내 인스턴스가 비트코인 채굴기가 되어버릴지도 모른다..😰
인스턴스가 잘 실행되고있는 모습을 볼 수 있다.
상태 검사가 완료되었다면 해당 컴퓨터에 접속해야한다.
위처럼 인스턴스에 접속하는 방법이 나온다.
접속할 때는 SSH로 접속한다.
AWS에서 키파일을 ~/.ssh 경로에넣는것을 권장하고있다.
키파일을 사용하기 위해서는 접근모드를 400으로 바꿔줘야한다.
chmod 400 AwsKeyPair.pem
그리고 인스턴스의 퍼블릭 DNS를 사용해서 연결한다.
퍼블릭 IP로도 접속할 수 있다.
따라서 위 인스턴스의 경우 아래 두 명령어로 접속할 수 있다.
ssh -i "AwsKeyPair.pem" ubuntu@ec2-54-180-90-165.ap-northeast-2.compute.amazonaws.com
ssh -i "AwsKeyPair.pem" ubuntu@54.180.90.165
처음 접속하면 위같은 확인 문구가 나오는데 yes를 입력하고 진행하면 된다.
이렇게 인스턴스에 성공적으로 접속한 것을 확인할 수 있다.
위에서 EC2를 생성했던 이유를 되돌아보면 Spring 프로젝트를 배포하고 싶은 이유였던 것을 확인할 수 있다.
평소에 로컬에서는 IntelliJ로 빌드해서 대충 되는구나 싶었다.
역시 도구가 편해
가만 생각해보니 실제 서비스에서 이렇게 할리가 없단말이지...
모든 서비스가 컴퓨터에서 IntelliJ를 손으로 눌러가면서 배포되고있다..?
미친생각이 아닐수가 없다😨
Spring 프로젝트가 Tomcat을 통해 어떤 방식으로 배포되는지 되돌아보는 시간을 가져보고자 한다
이전에 만들었던 EC2에 JDK와 Tomcat을 깔아보자.
아래 순서를 쭉 따라오면 된다.
wget으로 설치하기 전 여기에서 Tomcat 버전이 뭐가있는지 확인해보고 설치하도록 하자.
지금 당신이 이 글을 보고있을 때 쯤이면 8.5.56 버전이 없을수도있다.
sudo apt update
sudo apt upgrade
sudo apt install openjdk-8-jdk
wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.5.56/bin/apache-tomcat-8.5.56.tar.gz
압축을 풀고 tomcat을 /opt/tomcat 경로로 옮겨준다.
tar xvf apache-tomcat-8.5.56.tar.gz
sudo mkdir -p /opt/tomcat
sudo mv apache-tomcat-8.5.56 /opt/tomcat
쉘파일에 실행권한을 준다.
sudo sh -c 'chmod +x /opt/tomcat/apache/bin/*.sh'
설치가 끝났으니 이제 즐거운 배포시간이 다가왔다.
Tomcat은 기본적으로 .war 확장자를 가지고 파일을 배포한다.
이 사진을 보면 톰캣 경로 아래 webapps에 ROOT.war라는 파일이 보일것이다. 저 파일이 바로 톰캣이 배포한다는 그 파일이다.
추가로 덧붙여 설명하자면 .war 파일의 이름에 따라 접속하는 경로가 달라진다.
localhost를 예로 들면 ROOT.war라는 파일을 Tomcat에서 배포하면 localhost:8080/ 로 해당 배포된 프로젝트에 접근할 수 있다.
톰캣 기본 포트가 8080이다 🐱
하지만 Project.war라는 파일이 배포되면
localhost:8080/Project/ 로 해당 배포된 프로젝트에 접근해야 한다.
Filezila를 이용해서 파일을 옮겨주었다. github를 이용할 수도 있고 다양한 방법을 사용할 수 도 있다.
이제 배포준비가 끝났으니 Tomcat을 구동해야한다.
/opt/tomcat/apache-tomcat-8.5.56/bin/startup.sh
Tomcat을 구동하고 해당 인스턴스 IP의 8080포트(혹은 DNS)로 접속하게되면
이렇게 잘 배포된 모습을 확인할 수 있다.
글을 작성하고 다시보니 생각보다 별거 없었는 내용일수도 있겠다는 생각이 들었다.
하지만 막상 무엇이든 처음 시도하면 이런 가이드가 절실히 필요하기에 앞으로도 이런 사용기는 남겨둘 예정이다.
물론 그 과정은 맨당에 헤딩의 연속이겠지만 😐
일단 박치기 (선빵필승)😇
??? 그 빨간카드는 좀 치우고 이야기하시죠
깔끔하게 설명해주셔서 감사합니다!! 덕분에 ec2를 처음 사용하는데 있어 많은 도움 되었습니다.