0. 준비물

SSH 접속 툴 : Mobax

Putty와 FileZilla를 합쳐놓은 듯한 프로그램이다.

사용하기 편하고 무료버전도 충분하다. 다운로드하자. 

https://mobaxterm.mobatek.net/download.html

 

MobaXterm free Xserver and tabbed SSH client for Windows

The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!

mobaxterm.mobatek.net

 

참고 내용를 읽어보고 시작하자.

https://ondolroom.tistory.com/815

 

도커 설치 및 기본 이용

참고 영상 youtu.be/hWPv9LMlme8 www.yalco.kr/36_docker/ 가장 쉽게 배우는 도커 어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주

ondolroom.tistory.com

 

https://ondolroom.tistory.com/881

 

도커 docker 간단 정리

리눅스 우분투에 도커 설치 https://shanepark.tistory.com/237 Ubuntu 20.04 LTS ) Docker 설치하기 Intro Docker는 제가 회사에서 사용하는 노트북의 OS를 Windows 에서 Ubuntu 로 변경하게 된 트리거 였습니다...

ondolroom.tistory.com

 

 

1. SpringBoot 프로젝트 준비 및 세팅

간단한 todoList를 준비하였다. 아래에서 다운로드 받을 수 있다.

springdatajpa_project.zip
0.07MB

 

프로젝트 환경

//스프링부트 버전
springboot 2.6.2
// 자바 환경
java 1.8
// 데이터베이스
h2 mem database
// 포트
8082

 

위 프로젝트를 빌드하여 jar 파일로 만들자.

파일명은 springdatajpa_project 가 앞에 붙도록 제작하는 것을 추천한다.
(ex springdatajpa_project-asdf.jar 등)

 

빌드 툴이 없다면 아래 링크를 따라하여 빌드해보자.

https://velog.io/@kekim20/Spring-Boot-%EB%B9%8C%EB%93%9C%ED%95%98%EC%97%AC-jar%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0

 

[Spring Boot] 빌드하여 jar파일 생성/실행하기

빌드하고 jar파일로 실행하기

velog.io

 

 

2. AWS EC2 세팅하기 

 

AWS는 콘솔화면이 자주 바뀐다.

20220425날짜 기준으로 작성 중이다.

 

AWS 아이디가 없다면 가입하자.

 

가입하고 인스턴스 시작을 눌러 클라우드 서버를 만들어보자.

 

이름은 없어도 되나 구분을 위해 적어주자.

 

AMI는 서버의 OS를 의미한다.

테스트 결과 도커 환경을 원활히 작동시키는 Ubuntu을 추천한다. 

 

인스턴스 유형은 서버의 성능을 정하는 부분이다.

현재 연습용이기 때문에 프리티어(AWS 신규 가입시 1년간 무료) 유형을 선택하자.

 

키페어는 보안접속을 위한 것이다.

키페어가 있다면 선택해주고, 없거나 새로만들고 싶으면 새 키 페어 생성으로 생성하자.
(생성 시 기본적으로 키페어 유형은 RSA, 여기서는 Mobax를 사용하므로 파일 형식은 pem 추천)

 

기존에 보안 그룹을 만들어 두지 않았다면 아래와 같이
SSH 트래픽허용 / HTTPS 트래픽 허용 / HTTP 트래픽 허용을 선택해주자.(22 / 443 / 80 인바운드 포트가 열린다.)
(추후 다른 포트를 사용할 경우 보안그룹에서 포트 설정을 해줘야 된다는 점을 기억하자.)

 

용량은 10기가 이상 gp3를 이용하는 것을 추천한다.
aws신규 가입자는 프리티어로 비용없이 사용가능 하기 때문에 30기가로 설정해도 무방하다.

 

 

모두 선택했다면 인스턴시작을 눌러주자.

 

모든 인스턴스 보기를 눌러 확인해보자.
(늦게 뜨는 경우가 있으니 새로고침하거나 기다려보자.)

 

퍼블릭 IPv4 주소를 확인하자.
(해당 아이피는 동적 아이피이다. 인스턴스를 중지하고 재실행하면 바뀔 수 있다. 바뀌지 않게 하려면 탄력적 IP를 사용하자.)

 

3. EC2 접속 및 도커 세팅하기

 

MobaXterm을 켜서 접속 세팅을 하자.

 

Session을 누른다.

 

SSH 클릭

Reomte host는 EC2서버의 퍼블릭 주소를 선택한다.

Specify username은 리눅스 서버의 기본유저명을 말한다.
우분투의 경우 ubuntu

포트는 22

Advanced SSH settings를 클릭하고 Use private key를 체크한다.

EC2를 구성할 때 생성한 키페어를 선택하여 넣어준다.

모두 작성했다면 OK를 눌러주자. 

 

아래와 같이 뜨면 접속에 성공한 것이다.

 

아래 링크를 참고하여 우분투에서 도커를 세팅해보자.

https://shanepark.tistory.com/237

 

Ubuntu 20.04 LTS ) Docker 설치하기

Intro Docker는 제가 회사에서 사용하는 노트북의 OS를 Windows 에서 Ubuntu 로 변경하게 된 트리거 였습니다. Docker를 사용하면 정말 편하게 격리된 컨테이너들을 구성해 가상화의 장점을 정말 잘 살릴

shanepark.tistory.com

 

 

4. 프로젝트 배포해보기

 

먼저 편안한 작업을 위해 Super User 권한을 받아오자.

 

원하는 경로에 폴더를 하나 만들어주자.

필자는 project 라고 이름 지었다.

 

해당 디렉토리로 이동해주자.

 

 

도커파일을 만들자.

확장자 없이 파일을 하나 만들고 이름을 Dockerfile 로 만든다.
(만들기 어렵다면, 예제 프로젝트 내부에 도커파일을 만들어 두었으니 사용하면된다.)

아래와 같이 내용을 입력해주자.
(1번 Jar파일 제작에서 정해준 이름에 따라 아래 ARG부분을 적절히 수정해주자. )

아래에 설명이 있으니 참고하자.

# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
#FROM openjdk:8-alpine3.9
FROM openjdk:8-jre-alpine3.9

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone

# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app

# 작업 파일을 변수화 하기
# ARG (변수명)=(파일명)
ARG JAR_FILE=springdatajpa_project*.jar

# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
COPY ${JAR_FILE} application.jar

# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
ENTRYPOINT ["java","-jar","application.jar"]

 

도커파일과 Jar 파일을 드래그하여 폴더에 넣어주자.

 

 

도커 배포 순서

1. 이미지 만들기 docker bulid ~

2. 컨테이너 만들기 docker create

3. 컨테이너 실행하기 docker start

(컨테이너 만들기와 실행하기를 동시에 할 경우 docker run을 사용한다.)

 

해당 프로젝트 디렉토리로 이동해보자.

cd /home/ubuntu/project/

 

프로젝트를 이용하여 이미지를 만들어보자.

docker build [옵션] [ -t 이미지 명] [도커파일 경로]

-t 는 이미지에 이름을 붙여준다는 뜻이다.

. 은 도커파일의 경로이다. 아까 도커파일 경로로 이동했기 때문에 . (현재경로)로 입력한다.

docker build -t test_proj_img .

 

성공적으로 만들어 졌다면, 

아래 코드로 이미지를 확인해보자.

docker images

 

컨테이너를 만들어 보자.

docker create [옵션] [-p 외부포트:내부포트] [--name 컨테이너명] [이미지명]

프로젝트는 8082포트로 제작하였지만 외부에서 80포트로 들어올 경우를 가정하여 제작한다.

docker create --restart=always -p 80:8082 --name test_proj test_proj_img

 

컨테이너가 생성되었는지 확인해보자.

-a 옵션은 모든 컨테이너를 보여준다는 뜻이다. (-a를 빼면 실행 중인 컨테이너만 보인다.)

docker ps -a

 

도커를 실행한다.

docker start test_proj

 

#참고 -  create와 start를 동시에 할 경우 run 명령어를 사용한다.

 

작동 로그를 확인한다.

-f 옵션은 컨테이너 내부에 로그를 지속적으로 보여줄 때 사용한다.

docker logs -f test_proj

로그를 벗어날 때에는 Ctrl + C 를 사용한다.

 

컨테이너 안의 리눅스 환경을 확인하려면

// 일반 이미지 기반 컨테이너
docker exec -it test_proj /bin/bash

또는

// alpine이나 slim 이미지 기반 컨테이너
docker exec -it test_proj /bin/sh

 

접속이 된 것을 확인할 수 있으며 도커파일의 WORKDIR로 시작하는 것을 볼 수 있다.

 

해당 컨테이너에서 나갈 때에는 exit를 입력한다.

 

웹에서 확인해보자.

자신의 퍼블릭 아이피로 접속해보면

 

아래와 같이 나오면 성공이다.

 

 

 

리눅스 우분투에 도커 설치

https://shanepark.tistory.com/237

 

Ubuntu 20.04 LTS ) Docker 설치하기

Intro Docker는 제가 회사에서 사용하는 노트북의 OS를 Windows 에서 Ubuntu 로 변경하게 된 트리거 였습니다. Docker를 사용하면 정말 편하게 격리된 컨테이너들을 구성해 가상화의 장점을 정말 잘 살릴

shanepark.tistory.com

 

-------------------------------------------------

 

[1] 이미지 생성
docker build -t 이미지이름 도커파일경로
 
M1 맥북 도커의 경우  docker build —platform linux/amd64 -t 이미지이름 도커파일경로
 
[2] 컨테이너 생성 및 구동
Mac OS, Linux
1. docker run -it --restart=always -d -p 포트:포트(인바운드 설정) --name 컨테이너이름 이미지이름
Window에서 구동 (테스트 서버)
docker run -it --restart=always -d -p 포트:포트(인바운드 설정) --name 컨테이너이름 이미지이름
--restart=always : 도커 재구동시 자동 실행
-d : 백그라운드 실행
-p : 포트설정 ex) 80:8080 80으로 접속시 8080으로 인바운드
--name : 컨테이너 이름 설정
 

-------------------------------------------------------------------------------------------------------------

 
도커 미사용 이미지 컨테이너 제거
docker system prune -a

 

-------------------------------------------------------------------------------------------------------------

 

도커 마리아DB 설정
 
mariadb 이미지 다운로드
docker pull mariadb
 
도커 컨테이너를 재실행하면 데이터가 모두 날아가기 때문에 데이터를 살려두려면 호스트의 디렉토리에 볼륨을 생성하여 연결하여야 한다.

 

볼륨생성

docker volume create test_volume

볼륨확인

docker volume ls

도커에서 볼륨 관리
docker run -it --restart=always -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v test_volume:/var/lib/mysql --name testmariadb mariadb
또는 디렉토리를 직접 설정
docker run -it --restart=always -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v /usr/local/dockerMariaDBVolume/volume1:/var/lib/mysql --name testmariadb mariadb
두 방식 중 하나를 선택하여 사용하자.
 

-e MYSQL_ROOT_PASSWORD=password 는 도커파일을 사용할 경우 쓰지 않아도 된다

docker run -it --restart=always -d -p 3306:3306 -v test_volume:/var/lib/mysql --name testmariadb mariadb

데이터베이스를 도커파일 없이 돌릴 경우 타임존 문제가 발생하였다. 도커파일을 이용하여 타임존을 설정하자

 

----------------------------------------------------------------------------------------------------------------------

 

nextjs 도커파일 예제

# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
# FROM node:14.15.4
FROM node

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone

# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app

# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
# app dependencies, install 및 caching
COPY . .

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
RUN yarn install

# 이미지 내부 환경 설정
# ENV (타겟) (내용)
# `/app/node_modules/.bin`을 $PATH 에 추가
# (bin폴더를 찾기 어려울 수 있으므로 환경변수에 추가해줌)
ENV PATH /app/node_modules/.bin:$PATH

RUN yarn build

# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
CMD ["yarn", "start"]

 

스프링부트 도커파일 예제

 

# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
FROM openjdk:11.0.8-jre-slim

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone

# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app

# 작업 파일을 변수화 하기
# ARG (변수명)=(파일명)
ARG JAR_FILE=demo*.jar

# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
COPY ${JAR_FILE} application.jar

# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
ENTRYPOINT ["java","-jar","application.jar"]

 

마리아 db 도커파일 예제

# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
FROM mariadb

# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone

# 이미지 내부 환경 설정
# ENV (타겟) (내용)
ENV MYSQL_USER testuser
ENV MYSQL_PASSWORD password
ENV MYSQL_ROOT_PASSWORD password

 

'Infra > Docker' 카테고리의 다른 글

도커 설치 및 기본 이용  (0) 2020.10.27

 

0. 개요

AWS에서 서버를 배포하려면
AWS에서 도메인을 구매하고
AWS에서 호스팅을 하고
AWS에서 인증서를 만드는 것이 편하다.

위 내용을 설명한 링크다.

https://ondolroom.tistory.com/873

 

AWS 도메인 등록 / 호스팅 관리 / HTTPS 적용

[도메인 등록] 1. Route53 페이지로 이동 2. 도메인 등록 화면으로 이동 3. 도메인 등록을 클릭 4. 도메인 이름을 선택 - 도메인 이름을 선택하고 기관(.com 등)을 선택하고 확인을 눌러서 사용 가능한

ondolroom.tistory.com

 

 

이번에는 AWS 외부에서 만든 도메인을 AWS와 연동시키는 방법을 간단히 설명한다.

내용 중 생략된 부분은 위 링크에 포함되어 있으니 참고 부탁드린다.

 

1. 가비아 도메인 생성

가비아에서 원하는 도메인을 만든다.

 

2. AWS Route 53 접속 및 호스팅 영역 생성

AWS Route53에 접속하여 호스팅 영역을 생성한다.

 

외부에서 만든 도메인을
도메인 이름에 입력하고
퍼블릭 호스팅 영역을 선택한 뒤
호스팅 영역을 생성하면 된다.

 

3. 호스팅 영역 확인

제작한 호스팅 영역의 도메인 이름을 확인하여 클릭한다.

 

4. 호스팅의 레코드들을 확인

호스팅 레코드 유형은 A / NS / CNAME / SOA 등등이 있다.

한번쯤 역할과 특성을 검색해보시길 바란다.

지금 확인 해야할 것들은 NS에 있는 4개의 값들이다.

맨 뒤에 .을 제거하고 (ns-asdf.com. -> ns-asdf.com) 모두 메모장에 저장해 놓자.

 

5. 가비아 도메인 네임서버 변경

가비아 도메인 관리 페이지로 가보면 네임서버가 아래와 같이 되어 있다.

이것을 AWS 호스팅 영역의 NS 것으로 변경해야한다.

네임서버 설정 버튼을 눌러 변경하도록 하자.

 

1~4차 내용을 모두 지우고 메모장에 저장해놓은 AWS 호스팅 영역의 NS로 입력하자.
(다시 한 번 말씀드리지만 입력 시 맨 뒤의 점(.) 은 없애야한다. )

 

적용 후 일정 시간이 걸린다고 하니 참고 바란다. 

 

6. AWS 호스팅 영역에서 A 유형을 세팅

세팅 시

example.com
www.example.com

두가지 각각 해주어야한다.

값에 EC2에서 만든 인스턴스의 탄력적 IP를 입력한다.
(EC2 생성 방법과 탄력적 IP는 이 링크 참고. https://ondolroom.tistory.com/878)

 

아래와 같이 되면 완료.

 

여기까지가 HTTP 적용방법이다.

HTTPS 적용방법은 맨 위쪽에 링크한 주소에서 확인 가능하나,

인증서 제작방법 및 적용화면은 한번 더 아래에서 소개하겠다.

 

7. 인증서 제작 방법

AWS Certificate Manager에 접속한다.

 

요청을 클릭한다.

 

퍼블릭 인증서 요청을 선택하고 다음을 클릭한다.

 

도메인 이름에

완전히 정규화된 도메인이름(www가 포함된 주소)을 입력하고

다른 이름 추가 버튼을 눌러 www가 제외된 주소도 입력한다.
(입력하지 않으면 www로만 인증서가 발급된다.)

검증 방법은 이메일도 가능하나 CNAME을 수동을 세팅해야되기 때문에 DNS 검증을 추천한다.

 

설정이 완료되면 요청버튼을 누른다.

 

아래와 같이 뜨면 인증서 보기를 클릭한다.
(나오지 않으면 해당 인증서 ID를 클릭하면 된다)

 

Route 53에서 레코드 생성 버튼을 누른다.
(이미 생성된 것을 예시로 보여주는 것이기 때문에 상태가 성공으로 보이지만 여러분은 검증 대기중으로 보일 것이다.)

 

외부에서 가져온 도메인이기 때문에 해당 필터를 클릭하여 없애준다.

 

 

관련된 도메인 모두 체크한 뒤 레코드 생성을 해준다.

 

Route 53에서 해당 도메인 레코드들을 확인하여 유형들이 아래와 같으면 된다.

Certificate Manager에 수시로 들어가 성공되었는지 확인해보자.

 

8. HTTPS 적용

맨 위쪽 링크의 로드 밸런싱 부분을 참고하기를 바람.

 

(끝)

 

'Infra > Aws' 카테고리의 다른 글

가비아 도메인 IP 연결하기  (0) 2022.01.17

 

1. 로그인 후 마이페이지 My가비아로 접속한다.

 

2. 도메인을 클릭

 

3. 연결할 도메인의 관리 버튼을 클릭한다.

 

4. 도메인 연결 설정 버튼을 클릭한다.

 

5. 해당 도메인을 체크하고 DNS 설정을 클릭한다.

 

6. 호스트 이름과 IP주소를 입력한다.

이후 확인 버튼을 누른뒤 저장하면 완료.

 

참고.

https://customer.gabia.com/manual/dns/3041/3040

 

가비아: 국내 1위

 

customer.gabia.com

 

 

'Infra > Aws' 카테고리의 다른 글

가비아 도메인 + AWS IP 연결하기  (0) 2022.01.18

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

 

 

 

 

 

 

 

 

[도메인 등록]

1. Route53 페이지로 이동

 

2. 도메인 등록 화면으로 이동

 

3. 도메인 등록을 클릭

 

4. 도메인 이름을 선택

- 도메인 이름을 선택하고 기관(.com 등)을 선택하고 확인을 눌러서 사용 가능한지 확인 해본다

- 내가 적은 것이 사용 가능하면 사용 가능이라고 뜨며 원하는 도메인을 장바구니에 추가한다

 

5. 장바구니 확인

- 왼쪽에 장바구니에 등록된 도메인이 나온다

- 확인 후 아래에 있는 계속을 누른다

 

6. 도메인 등록 세부 정보를 입력한다

 

7. 약관을 확인하고 주문을 완료한다

 

8. 등록된 도메인 화면에서 도메인이 등록되었는지 확인한다 (끝)

 

[호스팅 관리]

1. DNS 관리 - 호스팅 영역으로 들어 간다

 

2. 도메인 리스트를 확인한다

- AWS에서 만든 도메인은 설명란에 HostedZone created by Route53 Registrar와 같이 뜬다

- 해당 도메인 이름을 클릭하여 이동한다

 

3. 레코드 생성을 클릭한다

 

4. 레코드의 속성을 입력한다

- 레코드 이름은 특별한 경우가 있을 경우 (blog.naver.com 등) 입력

- 레코드 유형 아래를 참고 하거나 인터넷 검색 해보자(사이트 아이피를 등록할 경우 A로 설정한다)

https://www.cloudflare.com/ko-kr/learning/dns/dns-records/

- 값 부분에 아이피를 입력한다

- TTL은 Route53이 레코드의 정보를 얻는 주기인 것 같다
(아이피를 변경할 경우 TTL의 시간만큼의 대기시간이 생긴다는 것)

- 기타 사항은 info 버튼을 이용하여 확인해보자

 

5. 레코드 생성 버튼을 클릭한다

 

6. 레코드가 추가 되었는지 확인한다 (끝)

- A 레코드로 입력한 사이트를 도메인으로 접속해본다 (접속이 되지 않을 경우 몇분 기다려 본다)

 

[HTTPS 적용]

 

웹 서버의 SSL 설정 없이 HTTPS 적용 가능한 시스템인 것 같다

http://devstory.ibksplatform.com/2017/10/aws-acm-amazon-certificate-manager-ssl.html

 

[AWS] ACM (Amazon Certificate Manager)를 통한 SSL 적용 웹사이트 구성

IBK시스템 플랫폼 사업팀 블로그입니다. 플랫폼 사업을 진행하면서 경험한 생생한 IT기술을 공유하고자 합니다.

devstory.ibksplatform.com

 

1. Certificate Manager로 접속한다

 

2. 인증서를 만들 것인지 사설 인증기관을 사용할 것인지 선택한다

- 여기서는 AWS에서 인증서를 생성한다

 

3. 인증서 요청을 클릭한다

 

4. 공인 인증서 요청

- 인증서 요청을 클릭

 

5. 도메인 이름을 추가한다

- 도메인 이름은 실제 도메인 이름과 앞에 www. 를 붙여 2가지로 작성한다
(www.을 추가하지 않으면 해당 주소로는 접속이 안된다고 한다)

- 다음을 클릭한다

 

6. 검증 방법 선택하기

- DNS 검증이 편할 경우 DNS 검증을 하고 aws계정에 등록된 메일 주소를 본인이 관리하고 있다면 이메일 검증도 가능하다

- 선택한 뒤 다음을 클릭한다

 

7. 메일을 확인한다

- 도메인 이름을 여러개 추가했을 경우 메일이 여러개 온다

- 확인 한 뒤 I Approve를 클릭해준다

 

8. 인증서 리스트 페이지에서 발급 확인

- 검증 상태가 모두 성공이 되고, 어느정도 기다리면 상태가 발급 완료로 변경된다.

 

9. EC2 콘솔에서 로드 밸런서를 찾아 들어간 뒤 로드 밸런서 생성

 

10. Application Load Balancer 선택

- 클래식을 사용해도 무방하나 http로 요청시 https로 리다이렉트하려면 Application Load Balancer를 선택해야한다

 

11. 로드 밸런서 설정하기

#

- 로드밸런서 이름을 기입한다

- 외부 통신이기 때문에 Internet-facing을 선택

- IP address type은  IP4 / IP6에 따라 선택

 

##

- VPC는 직접 인터넷을 검색해서 선택하거나 기본 사용하는 것이 있다면 사용

- Mappings는 해당 인스턴스의 지역을 체크 하면 되고 최소 2개 이상의 지역을 선택해야 함

 

###

- 보안 그룹을 설정한다

- 보안 그룹이 없다면 다른 페이지에서 생성 후 새로고침 버튼을 누른 후 추가 해준다
(세팅 시 아래와 같이 인바운드 옵션을 추가하자)

 

 

####

- 리스너와 라우팅을 추가한다

- 위 사진과 같이 HTTPS 프로토콜과 HTTP 프로토콜을 각각 만들어 주자

- 타겟 그룹을 선택해야 하지만 없다면 Create target group를 이용하여 타겟 그룹을 추가해보자

- 타겟 그룹은 아래와 같이 추가해보자

-

-

-

-

- 원하는 인스턴스 체크

-

-

- 타겟 그룹 생성 됨 (로드밸런서 설정으로 돌아가서 세팅하자)

 

#####

- 보안세팅은 기본 제시된 것으로 사용

- ACM은 위에서 만든 인증서를 등록하자

 

######

- 로드밸런서 생성

 

12. 로드 밸런서 리스트에서 확인

- DNS 이름을 따로 복사 해놓자

 

13. HTTP 접속 시 HTTPS 리다이렉트를 위해 리스너를 설정한다

- HTTP 80 포트의 규칙 보기/편집 클릭

 

14. 연필 모양 클릭 클릭

 

15. THEN 삭제

 

16. 작업추가- 리디렉션 대상 선택

 

17. 리디렉션 대상을 HTTPS 443으로 설정하고 업데이트

 

18. 호스팅 영역에서 해당 도메인을 선택한 뒤 위에서 만든 A 레코드를 삭제하고 새로운 레코드를 생성해야한다

- A레코드는 2가지를 생성해야한다 (레코드이름을 공백으로 한번 / www. 를 앞에 붙이고 한번더 )

- 트래픽 라우팅 대상은 별칭을 선택하고 이전에 만든 로드밸런서를 선택한다

 

19. 로드밸런서 아웃바운드 로드밸런서 설정

 

이제 HTTPS가 적용되었다. (끝)

 

참고.

https://twofootdog.tistory.com/29

 

AWS ELB(Elastic Load Balancing) 생성 후 EC2 연동 & 외부 도메인 연동

이번 글에서는 AWS ELB(Elastic Load Balancing)을 생성한 후 EC2 인스턴스와 연결한 뒤 외부 도메인을 연동하는 법에 대해 알아볼 것이다. 글의 순서는 다음과 같다. ELB에 대한 설명 ELB 생성 후 EC2 인스턴

twofootdog.tistory.com

 

https://sovovy.tistory.com/37

 

AWS EC2와 도메인 연결 (가비아)

 목표) AWS EC2에서 실행중인 웹 서버를 구매한 도메인과 연결하기 (가비아에서 구매한 도메인) 1. 우선 AWS의 Route53 서비스로 이동합니다. (https://console.aws.amazon.com/route53) 2. 두 버튼 중 아무거나..

sovovy.tistory.com

 

https://mwoo526.tistory.com/16

 

AWS Certificate Manager

- SSL/TLS 인증 서비스 간간히 도메인 주소창에 왼쪽 에 녹색 열쇠가 표시되는 경우가 보인다. "안전함" 이라고 적혀져 있던데 뭐가 안전하다는 걸까? 바로 SSL/TLS 인증을 받고 있다는 뜻이다. 이것

mwoo526.tistory.com

 

https://www.comtec.kr/2021/07/14/aws-dns-ssl/

 

 

참고 영상

youtu.be/hWPv9LMlme8

 

www.yalco.kr/36_docker/

 

가장 쉽게 배우는 도커

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

www.yalco.kr

 

 

윈도우 도커 설치

도커사이트에서 도커 다운로드 및 설치 (윈도우)

www.docker.com/get-started

 

Get Started with Docker | Docker

Learn about the complete container solution provided by Docker. Find information for developers, IT operations, and business executives.

www.docker.com

 

윈도우에 설치할 것이기 때문에 윈도우 버전을 다운로드

 

다운받은 파일을 실행하고 설치 - ok클릭

 

설치 중

 

윈도우의 재시작이 필요하다

저장할 파일들을 모두 저장 후 버튼을 누르자

 

참고: 재시작 후 안랩 관련 보안프로그램을 쓴다면 hosts파일이 변경 되었다고 경고메시지가 뜬다.

복원하시겠냐고 하면 아니오를 선택해줘야 할듯 하다.

 

wsl2 커널을 업데이트하고 재시작 하라고 한다.

 

 

사이트로 접속하여 따라해보자

docs.microsoft.com/ko-kr/windows/wsl/wsl2-kernel

 

WSL 2 Linux 커널 업데이트

WSL 2 Linux 커널을 수동으로 업데이트하는 방법에 대한 지침입니다.

docs.microsoft.com

 

업데이트 파일을 받아서 설치하면 된다.

 

대부분 잘 설치되겠지만 아래와 같이 설치가 되지 않는 경우가 있다.

그럴경우 53번 포트를 사용하는 다른 프로그램이 있다는 뜻이다.

 

위와 같이 오류가 뜰 경우 해당 프로그램을 종료시키고 Reset해본다.

그래도 안된다면 아래의 cmd코드를 이용해서 프로세스를 죽인 뒤 다시 Reset해보자. 

killohotel.tistory.com/entry/window-port-%EC%A3%BD%EC%9D%B4%EA%B8%B0

 

윈도우 포트(window port) 죽이기(kill)

netstat : 실행중인 port 찾기 netstat -a -o : 실행중인 port 표시, 프로세스id(pid) 표시 taskkill /f /pid 1234 : 1234 프로세스id(pid) kill하기

killohotel.tistory.com

 

이렇게 메시지가 뜬다면 제대로 설치 되었다는 뜻이다.

 

 

아래와 같이 창이 뜬다.

 

 

더보기

기어 모양을 누르면 아래와 같이 설정 화면이 뜬다.

입맛에 맞게 설정.

 

 

Start를 누르면 아래와 같이 화면이 뜬다.

 

docker --version 을 입력후 엔터를 치고 버전이 나온다면 정상 설치 되었다는 뜻이다.

 

잘 나온다면 skip tutorial을 이용하여 튜토리얼을 종료해도 되고, 그대로 따라서 연습해도된다.

지금은 얄팍한 코딩사전을 따라 진행해보겠음.

 

도커 파일들이 저장될 경로는 아래와 같이

윈도우 Users(사용자)의 내 사용자명 안에서 폴더를 하나 만들어 지정해주자.

 

 

도커 연습

 

vs code에서 위 폴더를 열어보자.

 

폴더가 열리면 새터미널을 불러낸다.

 

터미널에서

git clone https://gitlab.com/yalco/practice-docker.git 을 입력한다.

그럼 연습파일들이 다운로드 된다.

 

 

도커 환경 내에서 node.js를 설치해본다.

docker run -it node

docker -> 도커명령어

run -> 컴퓨터에서 파일을 찾아본 뒤 없으면 도커허브에서 이미지파일을 다운로드 후 컨테이너 생성

-it -> 컨테이너를 연 뒤 해당 컨테이너의 CLI를 사용하겠다는 뜻

 

 

아래와 같이 입력콘솔이 나오면 성공.

 

명령어도 바로 입력 가능

 

컴퓨터에 해당 이미지파일이 없다면 도커허브라는 곳에서 다운을 받게 되는 것.

hub.docker.com/search?q=node&type=image

 

Docker Hub

 

hub.docker.com

 

새 터미널을 하나 더 띄워서

docker images

를 입력하면 아래와 같이 node의 이미지가 보인다.

 

docker ps

라고 치면 현재 있는 컨테이너가 나온다.

 

위 컨테이너를 실행해보자.

docker exec -it [컨테이너명] bash

실행하면 리눅스환경으로 접속된다.

해당 리눅스환경은 도커데스크탑프로그램 내부에서 구동되는 것이다.

 

첫번째 터미널에서 ctrl + c 를 누르면 node의 CLI에서 빠져나올 수 있다.

 

docker ps 를 입력하면 현재 작동 중인 컨테이너만 보여준다 (현재 아무것도 없음.)

docker ps -a 를 입력하면 모든 컨테이너를 보여준다

 

도커의 이미지와 컨테이너들은 도커에 의해 현재폴더가 아닌 다른 곳에 저장된다.

 

주의 - 아래를 실행할 때에는 실제 개발환경에서는 주의해서 사용할 것.

# 모든 컨테이너 중지

# 사용되지 않는 모든 도커 요소(컨테이너, 이미지, 네트워크, 볼륨 등) 삭제

docker stop $(docker ps -aq)

docker system prune -a

 

도커파일 사용법

frontend 디렉토리로 이동하여 주석처리된 명령어를 입력.

 

 

주의!!!!!!!!!!

git bash를 터미널로 해놓을 경우 경로 이상때문에 문제가 발생한다.

파워쉘로 변경해서 진행하자.

 

더보기

아래 보이는 경로가 기본경로가 되어서 리눅스 환경에서 문제가 발생한다.

 

 

docker build -t frontend-img .

 

만들어진 이미지가 보인다.

 

해당 이미지로 서버를 실행해보자.

docker run --name frontend-con -v $(pwd):/home/node/app -p 8080:8080 frontend-img

혹시 위 명령어로 안될 경우 쌍따옴표를 아래와 같이 붙여보자.

docker run --name frontend-con -v "$(pwd):/home/node/app" -p 8080:8080 frontend-img

 

로컬호스트로 접속해보면 라고 뜬다.

 

docker build -t frontend-img . // 도커이미지 파일 생성

// 컨테이너 생성 및 실행
docker run --name frontend-con -v $(pwd):/home/node/app -p 8080:8080 frontend-img

docker exec -it frontend-con bash  // 컨테이너 안의 리눅스환경으로 이동

docker stop frontend-con // 컨테이너 중지

docker start frontend-con // 컨테이너 시작

docker rm frontend-con // 컨테이너 삭제

 

docker stop $(docker ps -aq)

docker system prune -a

를 실행하고 db와 백엔드도 테스트해보자.

 

docker build -t database-img .

docker run --name database-con -it -p 3306:3306 -d database-img

docker stop database-con

docker rm database-con

 

설치해보고 워크벤치에서 확인해보자. 기존 컴퓨터에 mysql을 쓰는 상태라면 중지 후 이용해보자.

 

 

로그를 보려면

docker logs -f [컨테이너명]

--

 

마지막으로 디렉토리 위치를

cd .. 으로 practice-docker 로 이동하자.

그리고

docker-compose up -d

를 입력하면 

docker-compose.yml

파일의 정보대로 한꺼번에 이미지파일을 만들 수 있다.

 

설치완료 후 접속해보면.

 

참고

nirsa.tistory.com/81

 

[Docker CE] docker-compose 기본 명령어 정리

리눅스에서 docker-compose 명령어를 사용하려면 docker와는 별개로 docker-compose가 설치되어 있어야 합니다. (설치 방법 : https://nirsa.tistory.com/76?category=868315) 버전 확인 docker-compose --version..

nirsa.tistory.com

 

----------

리눅스 환경에서 테스트

 

aws 라이트세일을 이용하여 세팅

우분투(18.04)에 도커와 도커 컴포즈 설치.

hcnam.tistory.com/25

 

[Ubuntu] Docker / Docker-compose 설치

우분투 18.04.3 LTS 기준 작성입니다. vmware위의 우분투위에 일종의 vm인 도커를 깔다니 ㅎㅎ 1. 사전 준비  curl등이 깔려있는지 한번 체크해봅시다. sudo apt update 로 먼저 레포를 한번 업데이트해주고

hcnam.tistory.com

 

우분투 20버전 일 경우 아래 링크 확인

https://shanepark.tistory.com/237

 

Ubuntu 20.04 LTS ) Docker 설치하기

Intro Docker는 제가 회사에서 사용하는 노트북의 OS를 Windows 에서 Ubuntu 로 변경하게 된 트리거 였습니다. Docker를 사용하면 정말 편하게 격리된 컨테이너들을 구성해 가상화의 장점을 정말 잘 살릴

shanepark.tistory.com

 

포트포워딩도 세팅하자.

8080 / 5000 / 3306 포트 개방.

 

 

메모리가 적을 경우 DB가 실행이 되지 않는 등 문제가 발생한다.

스왑파일 세팅.

psychoria.tistory.com/717

 

[Ubuntu] 우분투 스왑 파일(swapfile) 생성 및 삭제

PC의 메모리는 일반적으로 8~32 GB 사이를 사용합니다. 메모리가 부족한 경우 메모리의 일부 내용을 디스크로 스왑(Swap)하게 됩니다. Windows의 가상 메모리와 같이 디스크의 일부를 메모리처럼 사용

psychoria.tistory.com

 

스왑파일 세팅 후 확인.

 

 

예제파일은 localhost를 기준으로 작성하였기 때문에 로컬컴퓨터가 아닌 곳에서 구동시 문제가 발생한다.

프론트엔드의 자바스크립트 통신 주소를 수정해주어야한다.

localhost -> aws 외부아이피로 변경.

캐시 비우기 및 강력 새로고침 필수.

(스벨트라는 프론트엔드 기술. 이번에 처음보는거라 헤메었음.)

 

순서를 확인하여 실행해본다.

// 1. 설치완료 후 도커 예제 받기
git clone https://gitlab.com/yalco/practice-docker.git

// 2. nano 설치하여 스벨트 코드 수정하기

// 3. 도커컴포즈로 컨테이너들 생성 및 실행 (백그라운드 작업)
docker-compose up --build -d 

// 4. 도커컴포즈 컨테이너들 다같이 정지
docker-compose stop

// 5. 도커컴포즈 컨테이너들 다같이 시작
docker-compose start

 

테스트결과

 

'Infra > Docker' 카테고리의 다른 글

도커 docker 간단 정리  (0) 2022.01.19

 

소유권

file1.txt는 sudo로 만들었으니 소유권이 루트로 나올 것이다

file2.txt는 그냥 만들었으니 소유권이 현재사용자로 나올 것이다

 

 

 권한뒤의 1은 링크수이다(바로가기 등)

 

 

 

 

여기서 4096은 용량이다

 

 

:의 왼쪽은 사용자 , 오른쪽은 그룹을 지정하는 것이다

 

 

 

 

>표시를 사용하면 모니터에 출력되는 대신 파일에 출력하게 된다

 

 

 

 

이전내용이 덮어씌워진다

 

 

꺾쇠 두개를 사용하면 덮어씌워지는 것이 아니라 추가가 된다

 

 

nohup은 프로그램을 데몬으로 실행하게한다

데몬은 따로 등록해야하지만 nohup을 이용하면 임의적으로 데몬실행이 가능하다

콘솔창을 꺼도 지속적으로 작동하게 된다(서버 등)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts