EC2 Instance 생성/연결 (Hands-on)

Create & Access EC2 Instance

AWS 메뉴에서 EC2 서비스를 검색하고 접속하여 Instance 시작 버튼을 클릭해 Instance를 생성할 수 있습니다.

용도에 맞는 AMI를 선택해야 합니다.

프리 티어 사용 가능은 과금이 되지 않습니다. (최신 버전은 이슈가 발생할 수 있기 때문에 LTS 버전을 사용합시다.)

CPU, RAM, 용량에 대한 선택이 가능하지만, 프리 티어 사용 가능 태그를 선택해야 무과금이기 때문에 그냥 프리 티어 선택하고 검토 및 시작을 눌러줍시다.

EC2 인스턴스 연결을 위해 새 키 페어 생성에서 키 페어 이름을 입력해주고 다운받으면 됩니다. 이후 인스턴스 시작-!


SSH 프로토콜을 통한 원격접속과 키 페어(.pem)

SSH(Secure Shell) 프로토콜은 Public Network를 통해 서로 통신할 때 보안상 안전하게 통신하기 위한 프로토콜입니다. (주고받는 데이터를 암호화 해 해당 키 페어를 가지지 않은 사람은 통신할 수 없습니다.)

EC2 프라이빗 키파일(.pem)

AWS에서 빌린 컴퓨터를 원격 제어하기 위해서는 SSH 통신을 위해 필요한 Private Key가 기록된 파일이 필요합니다.

.pem 확장자를 가지고 있으며, .pem파일은 관리에 유의해야 합니다.

이름을 수정 해 각 인스턴스를 쉽게 구분할 수 있습니다.

EC2 인스턴스 연결

인스턴스에 원격 접속을 하기 위해 필요한 것이 .pen (키 페어 파일)입니다.

로컬 터미널에서 SSH 프로토콜을 이용해 인스턴스와 연결이 가능합니다. .pem의 권한을 수정해줘야 합니다.

chmod란?

Linux의 기본 명령어로 Change mode의 약자입니다.
해당 명령어를 통해 파일 권한을 설정할 수 있습니다.

읽기(4), 쓰기(2), 실행(1) 세가지 숫자의 조합을 통해 권한을 보여할 수 있습니다.

키 페어 파일의 권한을 수정하지 않은 경우 권한이 open되어있다는 경고 메시지와 함께 접속이 거절됩니다.

따라서 chmod 명령어를 통해 키 페어 파일(.pem)의 권한을 수정해야 합니다.

ex)

chmod 400 (키 페어 파일)

파일 권한을 수정했다면 EC2 Instance 연결에서 ssh명령어를 통해 인스턴스에 접속할 수 있습니다.

SSH 명령어를 입력 후 처음 접속 시 경고 메시지가 출력됩니다. 'yes'를 입력하고 넘어가면 됩니다.


EC2 Instance 상에서 Server 실행

EC2 Instance를 생성하는 것은 가상의 PC 한 대를 임대하는 것입니다. EC2 Instance에 처음 접속하면 서버를 구동하는 데 필요한 개발 환경을 구축해야 합니다.
(패키지 매니저가 관리하는 패키지의 정보를 최신 상태로 업데이트 하기 위해 명령어를 입력해야 합니다.)

sudo apt update

다음으로는 node.js를 설치해야 합니다.

nvm install node

node.js의 설치가 끝나면 npm 명령어가 정상적으로 입력되지 않는 상황을 방지하기 위해 npm 설치를 진행합니다.

sudo apt install npm

git을 통해 서버 코드 클론 받기

github Repository 주소를 복사하고, git clone 명령어를 통해 EC2 Instance에 코드를 clone 받습니다.

Instance 상에서 cd를 통해 경로를 이동할 수 있습니다.

server 폴더로 이동한 뒤, npm install을 진행해 필요한 모듈을 다운 받는다.

설치 과정이 완료된 후 npm start를 통해 서버를 실행 할 수 있습니다.
(일반적으로 이 과정에서 에러가 발생할 경우 권한 문제입니다.)

sudo npm start

를 통해서 해결할 수 있습니다.

AWS EC2 대쉬보드를 확인하면, 퍼블릭 IPv4 주소와 퍼플릭 IPv4 DNS 주소가 있습니다.
(둘 중 어떤 주소를 사용해도 문제가 없습니다.)


Security Group(보안 그룹)

보안그룹은 AWS에서 임대한 Instance의 가상 방화벽입니다.
(Inbound와 Outbound)에 대한 규칙을 설정해야 합니다.

Instance로 들어가는 트래픽을 Inbound, Instance에서 나가는 트래픽을 Outbound라고 합니다.

Inbound 규칙에 허용되지 않은 규칙은 Instance에 접근하지 못합니다.
반대로 Outbound 규칙은 데이터를 내보낼 때 사용됩니다. 기본적으로 나가는 모든 데이터는 Outbound의 허락을 받아야 합니다.

보안 그룹에 들어가 규칙을 설정할 수 있습니다.


PM2

프로세스 매니지먼트 도구입니다.

프로세스와 프로그램의 차이

프로세스는 컴퓨터 프로그램이 실행될 때 프로그램 실행에 필요한 내용이 컴퓨터 메모리에 적재된다는 의미를 담고 있습니다. (프로세스 == 실행 중인 프로그램)

PM2 활용을 위해 ps명령어를 사용하면 서버 운영에 큰 도움이 됩니다.

일반적으로 ssh 프로세스 종료 시, EC2상의 프로세스도 같이 종료됩니다. (서버가 종료된다는 뜻..)

이런 걸 방지하기 위해 사용하는 프로그램이 PM2 (Proecess Manger)입니다.
(PM2는 node.js로 실행되는 프로그램을 관리해 주며, 백그라운드에서 실행되게 만들 수 있습니다.)

PM2의 다양한 기능

  • 프로그램이 변경될 때 자동으로 재시작
  • 프로그램 실행 중 에러가 나서 서버가 종료되면, 다시 자동으로 실행시켜주는 기능
  • 서버 운영에서 필수라고 할 수 있는 로그 관리를 전문적으로 가능
  • 클러스터 모드, 멀티 코어 CPU를 최대한 활용하는 옵션

PM2 설치방법

Instance 접속한 상태에서 PM2 설치하기~

npm install pm2 -g

PM2를 전역에 설치하고 나면, "pm2 start 파일 이름" 명령어를 이용해 node.js 앱을 실행할 수 있습니다.

pm2로 서버를 실행 후 터미널을 종료해도, node.js 애플리케이션이 프로세스로 계속 실행됩니다. (중단 및 재시작 또는 상태를 보기 위한 명령어도 기억해야 합니다.)

ex) 프로세스 중지

pm2 stop

ex) 프로세스 재시작

pm2 restart

ex) 프로세스 목록 보기

pm2 ls

ex) 프로세스 로그 보기

pm2 log

PM2 관리자 권한 부여하기

authbind 패키지를 설치해 PM2에 관리자 권한을 부여할 수 있습니다.

sudo apt-get update

sudo apt-get install authbind

sudo touch /etc/authbind/byport/80

sudo chown ubuntu /etc/authbind/byport/80

sudo chmod 755 /etc/authbind/byport/80

authbind --deep pm2 update

authbind의 설치를 완료한 뒤, 먼저 'pm2 ls' 명령어를 통해 어떤 프로그램이 PM2의 프로세스 리스트에 등록되어 있는지 확인할 수 있습니다.

authbind 설치 전 실행되고 있던 프로세스는 삭제해야 합니다. (관리자 권한을 부여하기 위해)

pm2 delete (파일 이름) 명령어를 통해 프로세스를 삭제합니다.

PM2에 관리자 권한을 부여하기 위해서는 authbind --deep 명령어를 앞에 추가해야 합니다.

authbind --deep pm2 start (파일 이름)

서버를 실행하면 문제없이 작동 될 것입니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글