[AWS]

EC2 에 Node.js 웹서버구현 기초

Hevton 2022. 2. 10. 17:36
반응형

 

 

EC2에 우선 ssh로 원격 접속을 해 들어간다.

 

그 상태에서

 

먼저 다운로더 패키지를 업데이트 해주고

sudo apt update

 

그다음 nodejs를 설치해주고

sudo apt install nodejs

 

 

그다음 nodejs 패키지매니저인 npm도 다운로드 해놓는다.

sudo apt install npm

 

 

다 했으면 이제 간단히 서버역할을 해주는 코드를 작성해보자.

sudo vi main.js

위 명령어로 편집기를 열어주고

 

 

아래 코드를 작성해준다.

var http = require('http');
var fs = require('fs');
var app = http.createServer(function(request,response){
    var url = request.url;
    if(url == '/'){
      url = '/index.html';
    }
    if(url == '/favicon.ico'){
            response.writeHead(404);
            response.end();
            return;
    }
    response.writeHead(200);
    response.end('hello');

});
app.listen(3000);

 

:wq로 저장해서 나온 뒤에

node main.js

 를 입력해주면 서버가 가동된다. 방금 만든 웹서버는 3000번 포트로 가동된다.

 

 

그래서 웹페이지에 EC2인스턴스주소:3000 을 입력해줘야하는데, 지금 입력해보면 높은 확률로 접속이 안될 것이다.

보안 규칙에 포트를 열어주지 않았기 때문.

 

 

EC2 인스턴스 설정에 보면 보안 그룹 설정 규칙이 있다.

 

보안 그룹 -> 인바운드 규칙 편집에 들어가서

 

3000번 포트를 열어주게 설정하고, 저장하면 된다.

 

 

이제 웹브라우저에 EC2인스턴스주소:3000을 입력하면

(참고로 EC2인스턴스주소는 본인의 EC2인스턴스주소를 말하며, 본인의 EC2 인스턴스 설정에 들어가보면

퍼블릭IP 나 퍼블릭DNS 가 있을것이다. 둘중 아무거나 선택해서 입력하면 된다.

ex) 124.123.23.3:3000

 

 

접속해보면 성공적으로 뜬다.

 

+ 3000번 포트로 웹서버를 열었기 때문에 HTTP 80포트는 굳이 안열어놔도 된다.

 

 

노드 서버 계속 실행해놓기

 

우리가 node main.js를 실행한 터미널을 보면, block 되어있음을 볼 수 있다.

이 터미널을 종료하면 서버도 종료된다.

 

터미널을 종료하더라도 실행을 유지시켜주기 위해선 pm2를 사용하면 된다.

(내 블로그 pm2 + 다른분 블로그 pm2)

 

 

우선 pm2를 설치해준다.

sudo npm install -g pm2

 

실행하는 방법은 이렇다.

pm2 start main.js

=> 터미널을 종료하더라도, main.js가 계속해서 실행 (서버 유지)

 

파일을 수정한 뒤에도 자동으로 재시동해주기 위해선 이렇게 해준다.

pm2 start main.js --watch

 

종료하는 방법은 이렇다.

pm2 stop main.js

 

현재 pm2에 등록된 것들의 리스트를 보기 위해선 이렇게 해준다.

pm2 list

 

 

 

pm2 관련 참고

https://hevton.tistory.com/128

 

[Node.js] 패키지 매니저 npm을 사용해 pm2 다운로드

맥에서 Node.js를 설치할 때 자동적으로 함께 설치되는 패키지 매니저 npm을 사용해서 실행중인 Node.js 프로그램을 관리하는 프로세스 매니저 PM2를 설치합니다. npm install pm2 -g 권한 오류가 떴을 때

hevton.tistory.com

 

 

EC2 Node.js 관련 참고

https://velog.io/@rheey90/AWS-EC2-Node.js-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC

 

AWS EC2 Node.js 서버 배포

AWS EC2는 아마존 웹 서비스에서 제공하는 서비스로서 아마존 웹 서비스 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. 과거와는 달리 투자 비용이 상당히 드는 서버를 담당하는 하드웨어

velog.io

 

반응형