AWS에서 가장 핵심 서비스는
EC2라 할 수 있다.EC2는 AWS에서 제공하는 클라우드 컴퓨팅 서비스(클라우드의 가상 서버)이다.
EC2서비스를 통해서 아마존이 국가별로 구축한 데이터 센터의 서버용 컴퓨터들의 자원을 원격으로 사용할 수 있다.
즉, 아마존으로 부터 한 대의 컴퓨터(=인스턴스 1개)를 임대하는 것이다. AWS가 제공하는 URL(Public DNS)를 통해 이 컴퓨터에 접근할 수 있다.
1) EC2 1년 무료 ubuntu서버 생성(인스턴스 생성)
❗ 운영체제 선택 단계에서, AMI(Amazon machine image)는 Linux 버전보다 ubuntu 버전이 오류가 덜 발생한다고 하여 ubuntu 선택함.
상세 설정은 인터넷 참고, 보안 그룹 구성 설정에서는 http규칙 추가해주기
SSH(기본) : 리눅스 서버 접속, 내 pc의 ip주소에서만 셋팅된 리눅스서버에 접속 할 수 있도록 하기 위함HTTP : WebServer의 역할을 하기 위해 다른 유저들이 리눅스 서버위에 세팅한 웹서버에 접속하기 위함키페어 생성 및 저장
인스턴스 생성 후, 공인IP 만들기(=탄력적 IP(Ellastic IP) 주소 할당하기)
2) ec2 인스턴스 연결
생성한 인스턴스 메뉴의
연결버튼을 누른 후, 2가지 가이드를 따르면 된다.
1. 프라이빗 키를 소유자 읽기전용으로 권한을 교체(chmod 400)
2. DNS주소 또는 탄력적 IP주소를 통해 접속을 시도
<1> 터미널로 접속 방법
(1) 키페어 프라이빗 키(.pem)를 보안된 위치인 .ssh 하위 디렉터리에 저장
mv ~/Downloads/MyKeyPair.pem ~/.ssh/MyKeyPair.pem
(2) 프라이빗 키(.pem)의 권한을 설정
chmod 400 ~/.ssh/MyKeyPair.pem
(3) ssh 명령어로 인스턴스에 연결 ✨✨✨(인스턴스에 접속 요청하는 명령어)
ssh -i [프라이빗 키(.pem)경로] ec2-user@[인스턴스의 퍼블릭 DNS(=IPv4 퍼블릭 IP)]

❗ 접속에 성공하면 안내문구와 함께 커맨드라인이 ubuntu@"ip":~$로 바뀐다
<2> putty로 접속 방법
ubuntu@xx.xxx.xxx.xxx (내 인스턴스 퍼블릭 ip주소)또는 명령어를 통해 등록해 줄 수 있다.
(1) .ssh/config 파일 열기
vim .ssh/config
(2) config 파일에 아래와 같은 양식으로 적는다.
Host : 인스턴스 이름
HostName : 인스턴스의 IPv4 퍼블릭 IP
User : AMI의 기본 사용자 이름
IdentityFile : 프라이빗 키의 경로
(3) 이제 Host 이름으로 인스턴스에 접속할 수 있다
ssh [Host 이름]
3) AWS EC2 Ubuntu환경에 apt를 이용해서 Nginx 설치
❗ 인스턴스 1개 생성 시, 1개의 ngnix가 필요
❗ apt 패키지를 업데이트하고 실행머신의 업그레이드 가능한 모든 패키지를 업그레이드 하는 과정
❗ 보안그룹 설정에가서 인바운드 편집을 통해 http접속을 오픈시켜 놓아야 한다
$ sudo apt update 업데이트 후,
$ sudo apt upgrade 업그레이드 후,
$ sudo apt install nginx nginx 설치
$ nginx -v
4) 리얼 배포 용으로 설정하기(리액트 빌드 + ngnix config 설정)
❗ 웹서버(Nginx)는 빌드된 파일을 사용함(미리 build된 산출물이 준비되어 있어야 한다)
설치가 끝나면 /etc/nginx 경로에 파일들이 생성된다. 기본 화면으로 연결되는 Nginx 설정파일들이 이미 만들어져 있는 상태이지만, 내가 새로 만드는 config설정과 겹칠 수 있기 때문에 모두 지우고 시작해야 한다(default 파일 삭제)
default파일 삭제
$ sudo rm /etc/nginx/sites-available/default
$ sudo rm /etc/nginx/sites-enabled/default
새로운 config 설정하기
$ cd /etc/nginx/sites-available/ 경로이동
$ sudo touch myapp.conf myapp 파일생성 후 아래와 같이 입력해주기
server {
listen 80;
location / {
root /c/user/myapp/build; // 자신의 경로로 설정하기
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
cd /etc/nginx/sites-available/에 위와 같이 설정파일을 만들었으면, 이 파일의 심볼릭 링크를 아래/etc/nginx/sites-enabled/경로에도 만들어준다$ sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/myapp.conf
5) ngnix 실행
$ sudo systemctl stop ngnix$ sudo systemctl start ngnix$ sudo systemctl status ngnix.service위의 과정은 일종의 배포 환경을 만들어 준 것으로서, 기본 원리는 클라이언트에서 빌드한 결과물을 ngnix 서버에서 받아서 배포시키는 원리이다.
=> aws의 서버(=컴퓨터)와 nginx(=프로그램) 연결되었으니, 나의 깃허브 주소와 연결(clone)시킨 후 배포해야 한다.