본문 바로가기

AWS

AWS - AWS 개념, EC2 생성, EC2 배포환경 설정

728x90
반응형

1) AWS

   1-1) AWS 개념

   1-2) EC2 생성

   1-3) EC2 배포환경 설정

 

 

 

 

 

 

 

 

1) AWS

1-1) AWS 개념

배포 : 최종 사용자에게 소프트웨어를 전달하는 과정

즉, 우리가 만든 결과물을 실제로 다른 사람들이 사용할 수 있는 상황을 만드는 것이 "배포"이다.

--> 결론: 브라우저에서 우리가 지정한 특정 URL로 http요청을 떄리면,
해당 화면이 나오고 실제 작업한 결과물이 나오는 행위

 

위의 결과물을 만들기 위해서는 아래의 준비사항이 필요하다!
1. 제3자가 접속할 수 있는 컴퓨터가 존재해야 함.
2. 그리고 그 컴퓨터가 24시간 켜져 있어야 함.

 

그래서 예전에는 이러한 컴퓨터를 빌려서 배포를 진행했다!
서버 컴퓨터(제3자가 접속할 수 있고, 컴퓨터가 24시간 켜져있는 것)를 빌려주는 것을 "호스팅"이라 하는데

이 호스팅에는 "웹 호스팅"과 "서버 호스팅"이 있다!

 

  • 웹 호스팅 : 서버를 빌려주지만, 이때 컴퓨터 한 대를 잘게 쪼개서 빌려주는 행위(이는 사용 범위가 좁고 제한적이며, 관리를 웹에서 할 수도 있게 해 줌)
  • 서버 호스팅 : 서버 컴퓨터 한 대를 대여해주는 행위

이에 우리가 사용할 방식은 소규모여도 충분하기에 "웹 호스팅"을 사용할 예정이며,

이때 사용할 웹 호스팅 업체는 "AWS(Amazon Web Service)"이다!

 

여기서 AWS는 단지 사이트 이름일 뿐이고,
이 AWS 사이트 안에는 아래와 같이 여러가지 제품들이 존재한다!

  • Amazon EC2
  • Amazon Lambda
  • Amazon S3
  • Amazon RDS

AWS의 장점은 사용한 만큼만 비용을 지불한다는 점이다!

 

이것은 클라우드 컴퓨팅이라는 기술 발전에 따라 가능해졌고,
이 클라우드 컴퓨팅으로, 서비스를 하는 형식도 여러가지가 생겨났다.

* 클라우드 : 엄청나게 많은 컴퓨터를 하나로 묶고, 그것을 어디서든 연결할 수 있게 하였으며,

컴퓨터에 가상화를 두고, 원하는 만큼 컴퓨터 자원을 쪼개서 주는 행위


그중 "Amazon EC2"는 IaaS에 해당한다.

 

IaaS(Infrastructure as a Service) : 컴퓨터 자원만 제공하는 형태

PaaS(Platform as a Service) : 개발자가 응용 프로그램을 작성할 수 있도록 플랫폼 및 환경을 제공하는 형태

SaaS(Software as a Service) : 설치할 필요도 없이 클라우드를 통해 제공되는 SW(소프트웨어)

 

그래서 우리는 컴퓨터 자원만 제공받는 형태인 IaaS를 사용할 예정이다!
그리고 우리가 사용할 AWS 서비스 이름은 "Amazon EC2"이다!

SSH : 원격으로 다른 컴퓨터를 접속하는 것을 말하며, 기본적으로 port는 "22번"을 사용함

 

 

 

 

1-2) EC2 생성

 

https://aws.amazon.com/ko/ 에서 회원가입(AWS 계정 생성)을 먼저 진행한 후,
아래와 같이 본인의 AWS 관리 콘솔에 들어간다!

(중요 체크 사항 : 반드시 우측 상단의 region 영역이 "서울"로 체크되었는지 확인해야 한다!)

 

 

위의 EC2 서비스를 클릭하거나 "EC2"를 검색하여 아래 화면으로 들어간다!

 

 

위의 "인스턴스 시작" 버튼을 클릭하여 아래 화면으로 이동한다!

 

 

1. 이름 및 태그

이름을 정해준다!

 

 

2. 애플리케이션 및 OS 이미지

운영체제를 선택한다!(Ubuntu Server 20.04 LTS 버전을 사용함)

 

 

3. 인스턴스 유형

컴퓨터의 자원 설정

 

 

4. 키 페어(로그인)

원격 접속 시 필요한 키값 받기(Windows를 사용하는 컴퓨터도 되게 하기 위해 왠만하면 "RSA"로 함)

그리고 키 페어 생성 후 만들어진 ".pem" 파일은 반드시 잘 저장해둘 것!!

 

 

5. 보안 그룹 설정(방화벽 설정)

아래 지정한 규칙을 통해 해당 port로 누구나 접속 가능하도록 설정한다!

 

 

여기까지 완료되었으면 이제 아래 "인스턴스 시작" 버튼을 눌러 인스턴스를 생성한다!

 

 

 

생성한 인스턴스 내용에 접속하기

 

 

 

 

1-3) EC2 배포환경 설정

node 설치하기

sudo apt update
sudo apt upgrade -y
# sudo apt install -y build-essential
sudo apt install net-tools
sudo apt install curl

# nvm 설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
source ~/.bashrc

# nvm 버전확인
nvm --version

# nodejs LTS 설치
nvm install node --lts

# 설치된 노드 버전 확인
nvm ls

node --version
npm --version

 

 

mysql 설치하기

sudo apt install mysql-server -y
mysql --version

## sevice 명령어로 실행하기
sudo service mysql start

## mysql 프로세스 확인하기
sudo service mysql status

sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by
'[password]';

#ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by #'root';
exit

sudo mysql -uroot -p[패스워드]

create user 'sangbeom'@'%' identified WITH mysql_native_password by 'Sangbeom0427!';
grant all privileges on *.* to 'sangbeom'@'%' with grant option;
FLUSH PRIVILEGES;

exit

sudo service mysql restart

mysql -uingoo -p[설정한 암호]

mysql > create database backend;

 

 

mysql 외부접속 설정

sudo netstat -ntlp | grep mysqld

 

 

## mysqld.cnf 파일 찾기
cd /etc/mysql/mysql.conf.d
ls
sudo vi mysqld.cnf

 

bind-address 부분을 "0.0.0.0"으로 바꿔주기

 

 

sudo service mysql restart
sudo netstat -ntlp | grep mysqld
ifconfig # 아이피주소 확인해보기.

 

 

port forwarding : 우선 외부 접속을 허용한 port(ex. 80번 port)로 사용자 요청이 들어오게 한 뒤

이를 컴퓨터 내부에서 다른 port(ex. 3000번 port)로 방향을 바꿔서 요청을 전달하는 것

(이는 port를 숨길 수 있다는 장점이 있음!)

sudo lsof -i :80 # 사용중인 포트번호 조회
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --toport
3000
# https://linuxstory1.tistory.com/entry/iptables-%EA%B8%B0%EB%B3%B8-
%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%B0%8F-%EC%98%B5%EC%85%98-
%EB%AA%85%EB%A0%B9%EC%96%B4

 

 

PM2

npm install -g pm2
pm2 --version
pm2 start index.js
pm2 kill
pm2 log
pm2 monit
# 빠져나올 경우 q
# https://pm2.keymetrics.io/docs/usage/quick-start/

 

npm install -g pm2
pm2 start npm --name "front" -- start
pm2 start
pm2 stop
pm2 list
pm2 restart
pm2 monit