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)시킨 후 배포해야 한다.