개발하는 뚝딱이

[Node.js] Node.js + Nginx + MongoDB 본문

[Node.js] Node.js + Nginx + MongoDB

개발자뚝딱이 2020. 8. 6. 19:09

 

개발환경

- Ubuntu

- Node.js + Nginx + MongoDB

 

 

 


 

1. 설치

1-1. 우분투에 접속

ttuk-ttak.tistory.com/33

 

[Mac] 터미널로 리눅스 ssh 접속하기

맥은 윈도우와 같이, 리눅스에 접속하기 위해 TeraTerm이나 Putty를 설치할 필요가 없다. 아래와 같은 절차로 쉽게 리눅스 서버에 접속 가능하다. <비밀번호로 접속하기> 1. 터미널 접속 2. ssh [사용자

ttuk-ttak.tistory.com

 

1-2. Node.js, npm 설치

sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

 

1-3. express 설치

sudo npm install -g express
sudo npm install -g express-generator

 

1-4. nginx 설치

sudo apt-get install nginx

 

2. express로 프로젝트 생성

더보기

Express는 Node.js의 서버를 더 쉽게 구축하기 위해 만들어진 프레임워크. 미들웨어 구조.

express [프로젝트명]

 

3. 서버 실행

cd nodeApp
npm install
node ./bin/www

Express의 웰컴 페이지가 보이면 설치가 잘 된 것!

 

 

4. nginx 설정

4-1. vim으로 파일 열기

sudo vim /etc/nginx/sites-available/default 

 

4-2. 아래 그림의 파란 글씨 수정

 

 

4-3. nginx 재시작

sudo /etc/init.d/nginx restart

 

4-4. Node.js 프로젝트 웹 연동 가능!

 

 

5. 기존 프로젝트에 MongoDB 연동하기

5-1. Mongoose 모듈 설치하기

npm install express body-parser dotenv mongoose

 

5-2. dotenv 파일 생성

환경변수 설정을 위한 파일 추가로, 프로젝트의 최상위에 .env 파일 작성

// 파일 위치 : /.env

PORT=[포트번호 작성하기]
MONGO_URI=mongodb://localhost/<db-name>

 

5-3.MongoDB 연결

app.js 파일(없으면 생성) 모듈을 require하고 connect 메소드로 MongoDB에 연결

require('dotenv').config();

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

const app = express();
const port = process.env.PORT || 4500;

app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

mongoose.Promise = global.Promise;

mongoose.connect(process.env.MONGO_URI, { useMongoClient: true })
  .then(() => console.log('Successfully connected to mongodb'))
  .catch(e => console.error(e));

app.listen(port, () => console.log(`Server listening on port ${port}`));

 

바벨을 사용하는 경우, 아래와 같이 작성

더보기

바벨 babeljs.io

- Node.js가 최신 스펙의 javascript를 모두 지원하는 것이 아니기 때문에 번역해주는 모듈인 '바벨'이 필요

- 실제로 개발된 소스를 관리하는 폴더와 babel로 변환되어 실행할 소르를 관리하는 폴더를 분리해야 함

 

require('dotenv').config();

import mongoose from 'mongoose'

...

mongoose.Promise = global.Promise;

mongoose.connect(process.env.MONGO_URI)
  .then(() => console.log('Successfully connected to mongodb'))
  .catch(e => console.error(e));