AWS ec2 server연결

kirin.log·2021년 11월 2일
0

EC2 인스턴스(ubuntu) 생성 및 연결 방법

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의 역할을 하기 위해 다른 유저들이 리눅스 서버위에 세팅한 웹서버에 접속하기 위함
  • 키페어 생성 및 저장

    • AWS EC2 인스턴스는 전용 키파일을 이용한 키 페어 로그인 방식이 디폴트이다. 이 키가 노출되면 누구나 내가 만든 인스턴스에 접속할 수 있기 때문에, 키는 반드시 내 로컬 내 안전한 위치에 저장해야한다.
  • 인스턴스 생성 후, 공인IP 만들기(=탄력적 IP(Ellastic IP) 주소 할당하기)

    • AWS가 보유하고있는 공인 IP를 사용자의 인스턴스에 연결해서 공인 IP를 통한 인스턴스의 접근, 웹 서버의 접근 등을 지원해준다.
      ❗ '탄력적 IP'는 발급해두고 인스턴스에 연결하지 않으면 과금 대상이 되니 쓰지 않을때는 꼭 반환(Release)해줘야 한다.
    • 앞으로 연결된 인스턴스는 복잡한 DNS 접속방식이 아닌 발행한 퍼블릭 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로 접속 방법

  • putty 설치 후 세션 등록
    (매번 인스턴스에 퍼블릭 ip로 접속하는 것이 번거로우므로, putty를 활용하여 인스턴스의 이름을 지정하면 간편하게 접근할 수 있다)
    • Host Name(or IP address) : ubuntu@xx.xxx.xxx.xxx (내 인스턴스 퍼블릭 ip주소)
    • Connection type: SSH에 설정
    • Auth -> Privit key file for authentication : 저장한 키페어 파일(.pem) 불러와서 open

또는 명령어를 통해 등록해 줄 수 있다.
(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 실행

  • 리눅스 명령어(systemctl)를 통해 인스턴스 연결 해제/시작/상태확인
    $ sudo systemctl stop ngnix
    $ sudo systemctl start ngnix
    $ sudo systemctl status ngnix.service

위의 과정은 일종의 배포 환경을 만들어 준 것으로서, 기본 원리는 클라이언트에서 빌드한 결과물을 ngnix 서버에서 받아서 배포시키는 원리이다.
=> aws의 서버(=컴퓨터)와 nginx(=프로그램) 연결되었으니, 나의 깃허브 주소와 연결(clone)시킨 후 배포해야 한다.

profile
boma91@gmail.com

0개의 댓글