0. 준비물

aws 계정

mobaXterm 프로그램 (무료버전)

기능이 완성된 Jar 파일 (여기서는 메모리 h2 데이터베이스를 사용함.)

 

1. aws를 켠다

 

2. ec2로 접속한다

 

3. 인스턴스 시작을 누른다

 

4. AMI를 선택한다

여기서는 Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type를 사용했다.

Ubuntu 등 원하는 것을 사용하면 된다.

 

5. 인스턴스 유형을 선택한다

자기가 원하는 사양을 고르면 된다.

사양이 높으면 높을수록 비싸진다.

여기서는 프리티어 t2.micro를 사용하였다.

여담이지만 초경량 배포를 위해서라면 ec2가 아닌 lightsail을 사용하는 것도 고려해볼만하다.

제한 사항이 꽤 있지만 매우 저렴한 비용으로 서버를 운영할 수 있다.

 

6. 인스턴스 세부 정보 구성

특별한 설정이 필요하지 않다면 다음으로 넘기자

 

7. 스토리지 추가

기본 설정은 8기가로 되어 있고, 프리티어 사용시 30기가까지 사용할 수 있다고 한다.

프리티어가 남아 있다면 30기가로 설정해서 이용하자.

 

8. 태그 추가

특별한 설정이 필요하지 않다면 다음으로 넘기자

 

8. 보안 그룹 구성

여기서 세팅해도 되나 추후 세팅해보기로 하고, 아래와 같이 기존 보안그룹을 선택한 뒤 패스 하자

 

9. 검토 및 시작 클릭

 

10. 시작하기 클릭

키 페어를 선택하라고 아래와 같이 뜨게 된다

새 키 페어 생성을 선택한 뒤 이름을 정하고 다운로드 한다.

한번 잃어버린 키페어는 다시 다운로드가 불가능하다고 하니 잘 보관하자.

 

11. 인스턴스 확인

ec2 대시보드에서 인스턴스를 선택해보자

 

아래와 같이 나오면 성공

 

12. ip 설정

인스턴스는 기본적으로 중지되었다가 실행되면 아이피가 변할 수 있는 상태이다.

서버 주소가 계속 변한다면 많은 애로사항이 꽃필 것이다.

변하지 않게 하려면 탄력적 IP를 만들어 주어야한다.

왼쪽의 카테고리에서 탄력적 IP를 찾아보자

 

들어갔다면 탄력적 IP 주소 할당을 누른다

 

특별히 건드릴 게 없다면 할당을 클릭하자

 

할당되었다면 해당 ip를 클릭하고 작업에서 탄력적 IP 주소 연결을 눌러보자

 

이전에 만들었던 인스턴스를 선택하면 되고, 해당 인스턴스의 프라이빗 IP주소를 선택하면 된다.

선택 후 연결을 눌러주자 

 

연결한 뒤 인스턴스로 돌아가서 인스턴스 재부팅을 해주면 탄력적 IP로 변경된 것을 확인할 수 있다.

 

13. 보안그룹 설정

SSH 통신을 위해서 보안그룹 설정을 하여야한다.

왼쪽 카테고리에서 보안 그룹 탭을 클릭하자.

 

보안 그룹 생성을 클릭하자.

 

보안 그룹 이름 / 설명을 입력하고 VPC는 특별한 사항이 없으면 그대로 두자.

 

인바운드 아웃바운드 규칙을 설정하자.

SSH 통신을 위해서  22포트를 열어주고 소스는 테스트 시 Anywhere로 하고 실제 배포 시엔 관리자 IP로 변경하자.

 

보안 그룹 생성을 누르자.

 

인스턴스로 돌아가서 이전에 생성한 인스턴스를 오른쪽 클릭하여 보안 그룹을 변경하자.

 

내가 만든 보안그룹을 선택하고 보은그룹 추가를 클릭하자.

그리고 이전에 연결된 보안 그룹을 제거하자.
(여러 보안그룹을 같이 사용할 수도 있다.)

이후 저장하면 완료.

 

14. SSH 접속

접속 방법은 다양하다.

첫번째 방법 = AWS 사이트에서 인스턴스를 선택후 연결.

웹상에서 바로 컨트롤 가능하다.

 

 

 

두번째 방법 = Putty , FileZilla 를 사용하기.

나쁘지 않으나 더 좋은 방법이 있다.

 

세번째 방법 = MobaXterm 사용하기

Putty , FileZilla를 같이 사용하는 느낌이다. 편해서 자주 사용한다.

무료버전을 사용해도 충분히 쓸 수 있으니 무료버전을 다운로드하여 사용하자.

다운로드하여 실행하면 아래와 같이 나온다.

Session을 클릭하여 새 세션을 만들자.

 

SSH를 선택.

이전에 생성한 탄력적 IP 입력.

아마존 리눅스의 기본 유저네임은 ec2-user 이다.

Advanced SSH settings를 선택.

Use private key를 클릭하여 이전에 만든 키페어를 선택.

OK를 누르면 세팅 완료.

 

접속하면 아래와 같이 뜬다.

루트 권한으로 사용하려면 sudo su를 사용하자.

서버 세팅은 완료 되었다.

 

혹시 연결이 되지 않을 경우 아래를 따라보자.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-set-up.html?icmpid=docs_ec2_console#ec2-instance-connect-setup-security-group 

 

Set up EC2 Instance Connect - Amazon Elastic Compute Cloud

If you previously configured AuthorizedKeysCommand and AuthorizedKeysCommandUser, the Instance Connect installation will not change the values and you will not be able to use Instance Connect.

docs.aws.amazon.com

 

 

15. 도커를 설치하자

아래 사이트를 통해서 도커를 설치하고 자동실행 등록하자.
(컨테이너 다운로드 실행은 하지 않아도 된다.)

https://niceman.tistory.com/36

 

[Docker] CentOS 7 - Docker 설치 및 실행 방법

1. Docker 기본 설치 # 1.yum 패키지 업데이트 yum -y update # 2.Docker & Docker Registry 설치 yum -y install docker docker-registry cs 2. Docker 실행 및 자동(On Boot) 실행 서비스 등록 #..

niceman.tistory.com

 

16. 파일을 넣자

mobaX에서 usr/local 로 접속하여 폴더를 생성하려고하면

Permission Denied 관련 에러가 난다.

 

아래 사이트의 맨 아랫줄과 같이 이렇게 입력하면 에러가 풀릴 것이다.

 

 

17. 파일을 업로드하자

target 폴더 안에는 jar파일이 있다.

Docker 파일도 작성하여 올려주자.

도커파일 내용

FROM openjdk:11.0.8-jre-slim
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone
WORKDIR application
ARG JAR_FILE=target/springdatajpa*.jar
COPY ${JAR_FILE} application.jar
ENTRYPOINT ["java","-jar","application.jar"]

 

18. 이미지를 생성하자

sudo su를 사용하여 루트권한을 얻자.

Dockerfile이 있는 디렉토리로 이동하여야한다.

 

이미지를 생성하자.

형식은 docker build -t [이미지이름] [도커파일 디렉토리]

docker build -t todo_img .

 

 

아래 명령어를 통해서 이미지가 생성 되었는지 확인 가능하다.

docker images

 

 

컨테이너를 생성하고 실행하자.

docker run --restart=always -d -p [외부포트]:[서버포트] --name [컨테이너명] [이미지명]

docker run --restart=always -d -p 8082:8082 --name todo_con todo_img

 

--restart=always 옵션은 컨테이너가 종료되면 다시 실행하도록 한다.

-d 옵션은 백그라운드 실행 설정이다.

-p 옵션은 포트설정 옵션이다.

--name 옵션은 컨테이너명을 설정할 수 있다.

 

아래 명령어를 통해서 컨테이너가 생성 되었는지 확인 가능하다.

docker ps

 

서버가 작동되어 있는지 확인하려면 아래 명령어를 사용해보자.

docker logs -f --tail=10 [컨테이너명]

docker logs -f --tail=10 todo_con

 

-f 옵션은 실시간 모니터링을 가능하게 해준다.

--tail=10 옵션은 마지막 10줄만 보여준다는 뜻이다.

 

 

 

로그 보기를 종료하려면 컨트롤 C를 누르자.

 

기타 도커에 관한 사항은 아래를 참고하자.

https://www.yalco.kr/36_docker/

 

가장 쉽게 배우는 도커

어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!

www.yalco.kr

 

 

 

 

 

 

 

+ Recent posts