EC2 에 Node.js 웹서버구현 기초
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
EC2 Node.js 관련 참고
https://velog.io/@rheey90/AWS-EC2-Node.js-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC