본문 바로가기

컴퓨터/NodeJS

NodeJS 서버 생성, 실행

1. 디렉토리 생성

$ mkdir app

2. 프로젝트 생성

app$ npm init

  일단 모든 질의에 기본값으로 응답한다. 그 후,

app$ vi package.json

 

{
  ...
  "main": "main.js",
  "scripts": {
    "test": "nodemon --watch ./ ./main.js",
    "start": "pm2 kill && pm2 start main.js --name app"
  },
  ...
}

  위와 같이 수정한다.

3. 프로세스 패키지 설치

  프로그램 테스트를 용이하게 해주는 「nodemon」과 프로그램을 백그라운드에서 실행하게 해주는 「pm2」패키지를 설치한다.

app$ sudo npm install nodemon pm2 -g

4. 외부 모듈 설치

  NodeJS에서 사용할 서버 생성에 필요한 함수들이 내장돼있는 「express」 모듈을 설치한다.

app$ npm install express cookie-parser ejs --save

5. 설정 파일 작성

app$ vi config.json

 

{
  "port": 3000
}

6. 서버 작성

app$ vi main.js

 

//모듈 추출
const EXPRESS = require("express");
const PATH = require("path");
const FS = require("fs");
const COOKIEPARSER = require("cookie-parser");

//설정파일 추출
const CONFIG = JSON.parse(FS.readFileSync("config.json", "utf8"));

//호스트 정보
const NETWORKINTERFACES = require("os").networkInterfaces();
const PRIVATENETWORK = Object.keys(NETWORKINTERFACES)[1];
const HOSTNAME = NETWORKINTERFACES[PRIVATENETWORK][0].address;
const PORT = CONFIG.port;

//서버 생성
const APP = EXPRESS();

//템플릿 설정
APP.set("view engine", "ejs");
APP.set("views", "./views/");

//미들웨어 설정
APP.use(EXPRESS.json());
APP.use(EXPRESS.urlencoded({extended: true, limit: "50mb"}));
APP.use(COOKIEPARSER());

APP.use("/source", EXPRESS.static(__dirname + "/source"));

//라우팅 모듈 추출
const INDEX = require("./routes/index.js");

//라우팅 설정
APP.use('/', INDEX.router);

//서버 실행
APP.listen(PORT, () => {
  console.log(`${HOSTNAME}:${PORT} 에 서버가 실행됐습니다!`);
});

7. 라우팅 작성

app/routes$ vi index.js

 

sayyesdoit@urgApp:/media/sayyesdoit/test/urg$ vi ./
//외부 모듈 추출
const EXPRESS = require("express");
const ROUTER= EXPRESS.Router();
const MYSQL= require("mysql2");
const FS = require("fs");
const CRYPTO = require("crypto");
const NODEMAILER = require("nodemailer");

//기본 설정
const CONFIG = JSON.parse(FS.readFileSync("config.json", "utf8"));
const TRANSPORTER = NODEMAILER.createTransport({
  service: CONFIG.mail.service,
  auth: {
    user: CONFIG.mail.user,
    pass: CONFIG.mail.pass
  }
});

ROUTER.post('/', async(req, res, next) => {
  로그인 수행
});

ROUTER.use(async(req, res, next) => {
  쿠키확인
  next();
});

ROUTER.get((req, res, next) => {
});

//index.js 를 main.js에 모듈로 내보낸다.
exports.router = ROUTER;

8. 서버 테스트

app$ npm test

9. 서버 실행

app$ npm start

'컴퓨터 > NodeJS' 카테고리의 다른 글

011. 정적 자료 제공  (0) 2021.10.28
PM2 사용법  (0) 2021.10.28
NodeJS 설치  (0) 2021.10.26
NodeJS 에서 fetch() API 사용하기  (0) 2021.05.14
NodeJS FileSystem (fs)  (0) 2019.06.25