제육's 휘발성 코딩
반응형

서버 배포 방법

  • 로컬 PC를 24시간 구동
  • 호스팅 서비스(Cafe 24, 코리아 호스팅 등)
  • 클라우드 서비스 (AWS, ZURE, GCP 등)
  • 비용 측면에선 로컬PC나 호스팅 서비스가 유리
  • 특정 시간에 트래픽이 몰리고, 유동적으로 사양을 늘려야 하는 상황이면 클라우드 서비스가 유리

클라우드란?

  • 클라우드를 통해 서버, 스토리지, DB, 네트워크, 소프트웨어, 모니터링 등 컴퓨팅 서비스를 제공하는 것
  • AWS의 EC2는 서버 장비를 대여하는 것이지만, 실제로는 그 안의 로그, 모니터링, 네트워크 관리 등 자동 지원
  • IaaS (Infrastructure as a Service) - 아이아스
    • 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스
    • 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해주는 서비스
    • AWS의 EC2, S3 등
  • PaaS (Platform as a Service) - 파스
    • IaaS를 한번 더 추상화한 서비스 - 많은 기능 자동화
    • AWS의 Beanstalk, Heroku 등
  • SaaS (Software as as Service) - 사스
    • 소프트웨어 서비스
    • 구글 드라이브, 드랍박스, 와탭 등
  • AWS는 첫 가입시 1년간 서비스 무료 - 서비스마다 제한은 있다. (프리티어)

AWS - EC2 인스턴스 생성

  • EC2 : Elastic Compute Cloud - 탄력적으로 사용할 수 있는 클라우드
  • 프리티어 기준 : t2.micro만 가능 (vCPU 1Core, 메모리 1GB), 월 750시간 제한 ( 1대 초과 사용 시 비용 발생)
  • 회원가입 후 오른쪽 상단에 지역을 서울로 변경 - ec2 검색

image

  • 인스턴스 시작 - AMI (Amazon Machine Image, 필요한 정보를 이미지로 만들어둔 것) 선택
  • 인스턴스는 가상머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지로 생각

image

  • t2.micro 선택

image

  • 기본 크기는 8GiB 인데 프리티어는 30GiB까지 가능하다. 최대치인 30으로 변경

image

  • 태그는 EC2의 이름을 붙여주는 것이다. 이름을 붙여주자.
  • 보안 그룹은 방화벽을 의미한다. SSH의 경우 EC2 터미널 접속이며, pem 노출 시 가상화폐 채굴을 당할 수 있으므로 반드시 설정
  • 마스터키인 pem키를 다운로드 받고 관리할 수 있는 디렉토리에 저장하자.

image

  • 인스턴스 생성이 완료되었고, IP와 도메인이 할당된 상태이다.

EC2 - EIP 할당

  • 인스턴스도 결국 하나의 서버이기 때문에 IP가 존재한다.
  • 재시작시 새 IP가 할당되므로, 매번 변경되지 않고 고정 IP를 갖게 해주는 EIP(탄력적 IP)를 설정해주자. (네트워크 및 보안 - 탄력적 IP)
  • 별도의 설정 없이 바로 할당을 선택 - 할당된 IP를 EC2 주소에 연결

image

  • 탄력적 IP 주소 연결 선택 - 인스턴스 선택 후 연결 - 생성한 인스턴스에 탄력적 IP가 저장됬는지 확인
  • *EIP는 생성하고 연결하지 않으면 비용이 발생한다. 바로 EC2에 연결하자 *

EC2 서버 접속

  • window 기준 : putty.exe, puttygen.exe 사용
  • putty는 pem키로 사용이 안되며, ppk 파일로 변환 후 사용해야 한다. 이 과정을 puttygen 사용

image

  • Conversions - import key 선택 - pem 키 열기 - Save private Key - 예 - ppk 저장 위치 선택

imageimage

  • username은 ec2-user로 생성 Browse.. 를 통해 ppk 선택

image

  • ppk를 불러온 후 다시 Session으로 넘어와서 Saved Sessions에 이름을 등록 후 저장 - 예

image

  • ec2 접속 성공 화면

EC2 - 기본 설정

  • 자바 설치
    • sudo yum install -y java-1.8.0-openjdk-devel.x86_64
    • 인스턴스 Java 버전 변경 - sudo /usr/sbin/alternatives --config java
    • java -version 으로 Java 버전 확인
  • 타임존 변경 - 기본 서버 시간은 미국 시간
    • sudo rm /etc/localtime
    • sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
    • date 명령어로 타임존 변경 확인
  • 호스트네임 변경
    • sudo -s 명령어로 root 권한을 반영구적으로 빌린다.
    • hostname : 현재 hostname 출력
    • cat /etc/hostname : /etc/hostname 파일 안의 내용 출력 (현재 가상머신의 hostname 입력되어있음)
    • hostnamectl set-hostname {호스트네임명}
    • hostname 으로 변경 확인 및 reboot

image

  • 재부팅후 curl {호스트네임} 입력 후 다음과 같이 80포트 에러가 발생하면 정상 작동 (80포트로 실행된 서비스가 없음을 의미)

AWS - RDS 인스턴스 생성

  • 데이터베이스 작업을 모두 지원하는 관리형 서비스 (Relational Database Service)
  • 프리티어로 무료지만, 1년 뒤 비용적인 측면, 교체용이성 등을 고려했을 때 Maria DB가 합리적
  • DB 생성 - MariaDB - 템플릿 : 프리 티어 선택

image

  • 마스터 사용자 정보 등록 (실제 DB에 접근하는 정보니 사용하는 정보로 기입)

image

  • 퍼블릭 액세스 - 예 선택 (추후 보안그룹에서 지정된 IP만 접근하도록 설정)

image

  • 데이터베이스 옵션 설정 및 생성

RDS - 파라미터 설정

image

  • 파라미터 그룹 생성 - 파라미터 수정

image

  • 타임존 설정 - Asia/Seoul

imageimage

  • Character Set 설정 - utf8mb4(이모티콘 사용가능) / utf-8

image

  • Max Connection - 150으로 설정 (사양을 높이게될 때 기본값인 60개 정도로 다시 돌려놓는다.)

RDS - DB 연결

image-20210922032341365

  • 데이터베이스 - 수정 - 추가 구성에서 DB 파라미터 그룹을 생성한 파라미터 그룹으로 변경

image

  • 즉시 적용 선택 - 재부팅으로 적용 재확인

RDS - 로컬 접속

image

  • EC2에 사용된 보안 그룹 ID 복사 (sg-07~)

image

  • 로컬 PC IP와 복사한 EC2 보안그룹 ID 규칙 추가 (MYSQL/Aurora 사용)

image

  • IntelliJ 에서 Database Navigator install - +버튼 My SQL 선택 - Host에 엔드포인트정보, user/password 에 저장했던 로그인 정보 기입

image

  • 정상적으로 DB Browser에 RDS 스키마가 노출된다.

image

  • 새로 생성될 콘솔창의 이름 지정

image-20210922034518821

  • 쿼리 실행 - RDS에서 생성한 DB명

image

  • latin1로 된 필드들을 utf8로 변경
  • ALTER DATABASE 데이터베이스명 CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_general_ci';
  • show variables like 'c%';
  • select @@time_zone, now(); 를 통해 RDS 파라미터 그룹에 적용한 한국시간 확인
create table test(
id bigint(20) NOT NULL AUTO_INCREMENT,
content varchar(255) DEFAULT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB;

insert into test(content) values ('테스트');

select * from test;
  • 테스트 테이블 생성을 통해 한글 데이터 등록 정상 확인

EC2 에서 RDS 접근 확인

  • putty를 통해 EC2 접속
  • sudo yum install mysql
  • mysql -u 계정 -p -h 엔드포인트 주소

image

  • 정상 작동 확인

 


본 포스팅은 프리렉-이동욱님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 책을 참고하였습니다.

반응형
profile

제육's 휘발성 코딩

@sasca37

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 맞구독은 언제나 환영입니다^^