개발햄비

[AWS] Amazon Web Serivce : AWS 에 Node JS 웹 서버 만들기 1 본문

개발/AWS

[AWS] Amazon Web Serivce : AWS 에 Node JS 웹 서버 만들기 1

개발햄 2019. 7. 29. 22:07

AWS EC2에 Node JS 웹 서버 구축하기 입니다.

1.우선 회원가입을 하고 로그인을 합니다. 회원 가입 시 신용카드 정보 입력이 필요합니다. 준비해두세요.!

  1. 인스턴스 시작 버튼을 눌러줍니다.

3.사용할 서비스를 선택하는 화면입니다. 이번은 우분투로 선택하겠습니다.

4. 인스턴스 유형 선택 화면입니다. 프리티어 사용 가능을 선택해주세요.

5.그 후 인스턴스 세부 정보 구성화면 입니다. 특별히 설정할 것이 없으니 [다음:스토리지 추가] 를 눌러줍니다.

6. 스토리지 추가에서 최대 30기가까지 무료이기 때문에 30기가로 설정해줍니다.

7. 그리고 키와 값을 추가하는 화면인데요 적당히 아무 값이나 넣어 주고 [다음: 보안 그룹 구성]으로 넘어갑니다.

8.다음과 같은 설정이 필요합니다.사용하고자 하는 서버의 형식에 따라 프로토콜 , 포트범위가 달라집니다.

 유형

프로토콜

포트범위

 소스

 SSH

 TCP

 22

 사용자 지정

 0.0.0.0/0

 HTTP

 TCP

 80

 사용자 지정

 0.0.0.0/0

 HTTPS

 TCP

 443

 사용자 지정

 0.0.0.0/0

 Custom TCP Rule

 TCP

 8080

 사용자 지정

 0.0.0.0/0

 Custom TCP Rule

 TCP

 9000

 사용자 지정

 0.0.0.0/0

이 설정 후 [검토 및 시작]을 눌러줍니다.

9. 그러면 다음 화면과 같이 설정 정보들을 확인 할 수 있습니다. 확인 후 [시작하기] 버튼을 눌러줍니다.

10. 기존 키 페어 선택 또는 새 키 페어 생성 화면입니다 .

 없는 분들은  새 키 페어 생성을 통해서 \[xxxxx.pem\]형식의파일을 저장해줍니다.

### 인스턴스 생성 완료! [인스턴스 보기] 를 선택해 줍니다.

11. 인스턴스 상황 확인 화면입니다 사용하고자 하는 인스턴스를 클릭 후 왼쪽 상단에 [연결] 버튼을 클릭해줍니다.

12 . 그럼 다음과 같은 창이 뜨게 됩니다

이제 [예] 에 써져있는 커맨드를 입력할 차례입니다 . 하지만 입력하기 전 10번 단계에서 다운받은 [xxxx.pem]을 옮기도록 하겠습니다

저는

/Users/project/Documents/AWS

위의 경로에 저장하였습니다. 그럼 터미널을 열고 각자 설정한 경로로 들어가주세요

$ ls -al  

을 통해서 화일 존재를 확인합니다.

그 후 [예] 에 있던 커맨드를 입력해줍니다

입력 후 Yes를 다시 입력해줍니다.

그럼 다음과 같이 화면이 나오면 EC2 에 접속한 것입니다.

  1. 우분트 서버 업데이트가 필요하기 때문에 업데이트를 해줍니다.

    $ sudo apt-get update
  2. 계속해서 Node JS도 설치합니다

    $ sudo apt-get install nodejs

    중간에 y/n 입력이 나오면 y를 입력해줍니다.

다운로드가 성공하면 다음과 같은 모습이 나옵니다.

  1. Node Package Manager : NPM 을 설치해줍니다
$ sudo apt-get install npm

중간에 y/n 입력이 나오면 전 단계와 같이 y를 입력해줍니다.
조금 시간이 지난 후 다음과 같이 나오면 정상 설치 입니다.

  1. 계속해서 express를 설치합니다.

    $ sudo npm install -g express    

-g는 Global 옵션으로 어느 path에서나 express를 사용할 수 있도록 하는 옵션입니다.

아래와 같이 화면이 나온다면 정상 설치입니다.

  1. Express generator를 설치합니다. 위와 같이 -g 옵션으로 설치 합니다 .

    $ sudo npm install -g express-generator@4

다음과 같이 나오면 성공입니다.

  1. NodeJS의 모니터링을 위해서 nodemon를 설치해줍니다.

    $ sudo npm install -g nodemon

  1. 환경 설정은 끝났습니다. 이제 경로에 폴더를 만들어줍니다
$ sudo mkdir node-project && cd node-project && sudo mkdir testNode && cd testNode
  1. express 기본 template을 생성합니다. View engine template은 ejs(Extended JavaScript)로 하였습니다.
$ sudo express -e  

간혹 아래와 같은 에러가 나올 때가 있는데 sudo를 꼭 써주세요

정상적으로 설치가 됐다면 아래와 같은 모습으로 나옵니다.

  1. 최종 확인. 아래의 커맨드를 날려 사진과 같은 파일들이 나오면 셋팅 완료입니다.

    $ ls -al

파일 수정하기

  1. npm을 인스톨 해줍니다.

    $  sudo npm install
  2. 파일 편집 명령어로 app.js 수정하기

    $  sudo vi app.js
    // port setup
    app.set('port', process.env.PORT || 9000);
  3. 아래 파일과 같이 // set port 부분을 수정

  4. 동일하게 밑의 코드를 추가해줍니다.

    module.exports = app;
    
    var server = app.listen(app.get('port'), function() {  
    console.log('Express server listening on port ' + server.address().port);  
    });  

그 후 ESC를 누른 후 :wq (저장 후 종료)로 빠져나옵니다.

5.package.json 파일의 node 모니터링을 위해 "start" 항목을 다음과 같이 수정합니다.

 $ sudo vi package.json
 "script":{
  "start": "nodemon app.js"
 },

그 후 ESC를 누른 후 :wq (저장 후 종료)로 빠져나옵니다.

Server Start

  1. 서버를 실행해줍니다

    $ npm start

    다음과 같이 뜨면 성공입니다.

2.웹 접속

윗 단계에서 [연결] 을 누르면 나오는 화면에서 [예] 를 확인해줍니다

그럼 위와 같이 ec2-18xxxxxxxxxxx 부분을 카피하고 뒤에 :9000 포트를 입력해주면 접속 끝!

백그라운드 실행하기

웹 서비스를 위해 자신의 컴퓨터의 터미널을 24시간 띄워놓는 것은 불가능하기 때문에
nohup
& 를 입력하여 백그라운드로 nodeJS server를 실행합니다.

$ sudo nohup npm start &

아래에 [1] 8814 가 표시되는 것을 확인 할 수 있는데 이것은 process ID입니다.

이제 터미널을 종료해도 접속가능한 것을 확인 할 수 있습니다.

$ ps -ef

위의 커맨드로 상황 확인도 가능합니다

프로세스 죽이기

ubuntu    8724  8700  0 13:39 ?        00:00:00 /usr/bin/node app.js

위 단계에서 이러한 글을 볼 수 있는데요 8724가 process Id 이기 때문에

kill [processId]

위의 커맨드를 통해서 프로세스를 정지하여 서비스를 종료할 수 있습니다.

자동 redirection

포트를 입력할 이유가 없기 때문에 아래와 같은 명령어로 포트를 입력하지 않고 넘길 수 있습니다.

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 9000

인스턴스 정지

사용하지 않는 경우 꼭 인스턴스를 중지해줘야 요금 폭탄을 막을 수 있습니다.

  1. 해당 인스턴스 오른쪽 클릭 후

  1. 중지를 눌러줍니다

그 후 몇 분이 지나면 정지된 모습을 확인 할 수 있습니다.