2021년 4월 13일 화요일

간단한 AWS EC2 클라우드 서비스 사용, 터미널 접속 및 웹서버 개발

이 글은 간단한 AWS EC2 클라우드 서비스 사용 방법을 정리한것이다. 이 글은 아마존 AWS EC2 클라우드 서비스 사용, 터미널 접속 및 웹서버 개발을 보여준다.

AWS 서비스 신청 및 인스턴스 생성

AWS에서 EC2 서비스 신청한 후, 서비스에서 적당한 인스턴스를 선택하여 생성한다. 

이런 모든 작업은 다음 AWS 데쉬보드의 각 메뉴에서 제공해준다. 


데쉬보드 메뉴 리스트(왼쪽)에서 인스턴스 메뉴 선택하고, 아래 화면에서 인스턴스 시작 버튼을 선택한다.

다음과 같이 이미 저장된 인스턴스 이미지들이 리스트된다. 이 글에서는 우분투 18.04 이미지를 인스턴스로 생성한다. 생성 시 순서는 화면을 읽어보며 따라가면 된다. 인스턴스 생성시 보안키를 생성할 수 있다. 보안키 파일 pem파일을 생성하고 다운로드받아 보관한다.

인스턴스 실행하면, 자동으로 해당 이미지가 아마존 서버에 로딩되고, 운영체제가 실행된다. 네트워크는 자동으로 아마존에서 제공되는 공개IP와 연결된다. 

터미널 접속 및 패키지 설치

실행 후, 인스턴스에 관련 패키지를 설치하기 위하여, 명령창을 관리자 모드로 실행한다. 명령창에서 ssh 터미널을 다음과 같이 실행한다. 

ssh -i "???.pem" ubuntu@ec2-##-##-##-###.ap-northeast-2.compute.amazonaws.com

???부분은 인스턴스 시작 시 생성되는 보안키 파일이다. ###은 해당 인스턴스의 공개 DNS주소이다. 이 주소는 다음과 같이 인스턴스 데쉬보드의 인스턴스에 연결 메뉴에서 얻을 수 있다. pem은 인스턴스 생성 시 다운로드받은 보안키 파일명 경로이다. pem 설정 뒤에 있는 부분은 인스턴스 접속 DNS 공개 주소이다.  

실행하면 다음과 같이 ssh 터미널에 접속된다. 혹시, "Permissions for 'private-key' are too open" 에러 발생 시 pem파일 속성에서 불필요한 파생 계정을 삭제하고 실행한다(상세 내용 참고).


이제 원격으로 접속된 아마존 서버에 기본적인 node.js 등 설치하여 사용한다(설치 참고).
sudo apt-get install npm

간단한 웹서버 코딩 및 실행
다음과 같이 express를 설치한다. 
npm install express

다음과 같이 js 파일을 생성한다. 
nano server.js

다음과 같이 코딩한다.
const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

3000번 포트에서 접속 가능하도록, AWS 인스턴스 데쉬보드 보안 탭에서 보안그룹 링크를 클릭하여, 방화벽의 인바우드 규칙을 다음과 같이 설정한다(참고. 아마존 CORS 설정).

이제 노드 서버를 실행해보고, 외부 네트워크에서 접속되는 지 확인한다(참고. 터미널 종료 후 서비스 계속 실행 방법).
screen
node server.js &

다음과 같이 각자 공개 DNS 주소에 접속되면 성공한 것이다.

마무리
AWS 서비스는 서버, 운영체제, 네트워크 설치 노가다를 크게 줄여준다. 이런 것들은 해본 사람도 설치에만 몇일 이상이 걸린다. AWS는 가입 후 AWS에서 제공하는 콘솔 데쉬보드에서 몇번의 클릭으로 웹서버, 데이터베이스서버, 딥러닝 패키지, IoT 패키지 등 이미지를 서버에 업로드해 실행시킨다. AWS의 가장 큰 단점은 비싼 비용과, AWS에 너무 특화된 서비스이다. 특히, 데이터 저장소, 네트워크 밴드폭 사용 비용 등이 비싼데, 아무 생각없이 신청했다가는 요금 포탄 맞을 수 있으니 주의가 필요하다.


댓글 3개:

  1. Hello,
    Your blog has a lot of valuable information . Thanks for your time on putting these all together.. Really helpful blog..I just wanted to share information about
    power bi training


    답글삭제
  2. Great very helpful blog. Thanks For Sharing Such A Wonderful Blog. I will definitely go ahead and take advantage of this. Your Blog Is Very Informative. Again Thanks For Sharing This Blogs With Us. For more learning go through skillslash.
    For Data Science Course Data Science course in Bangalore

    답글삭제