[node.js] Server 구동을 위해 필요한 기본 개념

Hyo Kyun Lee·2021년 7월 17일
0

node.js

목록 보기
11/34

1. PM2(node.js의 process manager)

node.js의 어플리케이션 실행을 지속시켜주는 모듈, REST API

node.js는 기본적으로 싱글 스레드 형식으로 실행되어, 클러스터 모듈을 통해 멀티 스레드 형식으로 어플리케이션을 실행할 수 있도록 지원한다.

리눅스에서 최초 실행되는 마스터(부모) 프로세스를 시작으로 서브(자식) 프로세스가 지속 생성되듯이, node.js 역시 CPU가 지원할 수 있는 영역 내 여러 서브 프로세스를 생성하도록 구현할 수 있다(부모프로세스를 통한 자식 프로세스 제어).

PM2는 npm의 일종이므로 설치하여 사용할 수 있는 모듈이자 REST API이다.

CPU의 core를 최대한 활용하여 자원효율을 높일 수 있고, 그만큼 서버운용의 효율성도 높일 수 있다.

어플리케이션의 로직이나 구성요소가 변경되었다면 pm2를 reload하여 해당 프로세스를 재반영 해야한다.

2. express / express-generator

Express를 이용한 웹프레임 워크 구조를 자동 설치 및 구성할 때 활용

VS code에서 node.js를 통한 서버로직 구현 시 data routing 및 탐색(MiddleWare 등)을 위해 express 모듈이 가장 중요하게 활용된다.

리눅스에서 node.js를 연동하여 실행할 때도 가장 중요하게 활용되는 요소로, express와 express-generator를 모두 활용해야 한다.

리눅스에서 node.js 서버를 실행하기 위해(http모듈과 express 모듈을 연결 및 포트지정) node /bin/www 을 기재하여 준다.

이 /bin/www 실행로직은 app.js에 들어있고, app.js가 사용하는 API는 express이다.

이때 필요한 모든 package와 모듈, framework를 구성해주는 모듈이 express-generator이며, express-generator를 설치하여 사용자는 편하게 express 이외 모듈을 설치할 필요없이 곧바로 관련 API를 사용할 수 있다.

3. node ./bin/www 의 개념(서버구동원리)

= express 모듈의 package.json script에 기재되어 있는 명령어

"start" : "node ./bin/www"

express 및 express-generator 설치 후, 위와 같이 package.json script에 서버시작 명령을 별도 사용자 설정하는 것이 가능하다.

즉, node ./bin/www가 아닌, npm start로 서버구동이 가능해진다.

node.js server port = 3000

express 서버는 포트를 별도 명시하지 않았다면, 보통은 3000 port를 사용한다.

.env를 통한 port 별도 설정가능

dotenv는 환경변수파일을 지정해주는 파일로, 이 역시 node package의 일종이다(npm을 통한 설치가능).

npm install dotenv

dotenv 설치 후, .env 파일을 vi하여 포트의 환경변수 설정을 해주고 bin/www 파일에 해당 .env 파일의 .config()을 require하여 해당 포트 및 경로로 네트워크 연결을 해줄 수 있다.

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

4. 참조링크


REST API - pm2

https://engineering.linecorp.com/ko/blog/pm2-nodejs/

express / express-generator
https://velog.io/@new_wisdom/Node.js-6-Express-Express-generator%EB%A1%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=buskerlic&logNo=221355763656

node package.json의 start root directory (bin/www) 확인

https://medium.com/aha-official/%EC%95%84%ED%95%98-rest-api-%EC%84%9C%EB%B2%84-%EA%B0%9C%EB%B0%9C-2-f61c9324d2c2

0개의 댓글