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에 너무 특화된 서비스이다. 특히, 데이터 저장소, 네트워크 밴드폭 사용 비용 등이 비싼데, 아무 생각없이 신청했다가는 요금 포탄 맞을 수 있으니 주의가 필요하다.


댓글 없음:

댓글 쓰기