이전 글을 참고하세요 :: https://blog.wonhada.com/?p=3328

express.js가 프론트용으로는 괜찮은데 좀 무거워서 hapi.js로 갈아탔습니다.
hapi에 SSL(https)을 적용하려면 아래와 같이 하면 됩니다.

MongoDB 설치와 테스트까지 함께 해보죠.

1. MongoDB 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

# 우분투 16.04용
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

# 기타 OS는 아래 링크에서 참조하세요.
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

apt-get update
apt-get install -y mongodb-org

mkdir /data
mkdir /data/db
service mongod start
systemctl enable mongod.service

mongo
> show dbs
> use test  <— test DB 생성
> db.users.insert({"name":"Wonhada"})  <— users 컬렉션 생성 및 데이터 추가
> db.users.find()

– 추후 MongoDB 제거를 원한다면 아래 코드를 이용하세요.

1
2
3
4
service mongod stop
apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

2. hapi.js 프로젝트 생성
– 프로젝트 폴더 생성 및 이동

1
2
mkdir /www/n_wonhada_com
cd /www/n_wonhada_com

– npm 준비

1
2
3
4
5
apt-get install -y nodejs-legacy
apt-get install -y npm
npm install --save https
npm install --save hapi
npm install --save mongojs

– app.js 파일 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
'use strict';

const Hapi = require('hapi');
const Boom = require('boom');

//================ https Begin ================//
var https = require('https');
var fs = require('fs');

var options = {
    key: fs.readFileSync('/etc/letsencrypt/live/{{생성된 폴더 확인}}/privkey.pem'),
    cert: fs.readFileSync('/etc/letsencrypt/live/{{생성된 폴더 확인}}/cert.pem'),
    ca: fs.readFileSync('/etc/letsencrypt/live/{{생성된 폴더 확인}}/chain.pem')
};

const server = new Hapi.Server();
server.connection({address: 'localhost', port: 3000, tls: options });
//================ https End ================//

//================ MongoDB Begin ================//
const mongojs = require('mongojs');
server.app.db = mongojs('test', ['users']);// test: DB, users: Collection(Table)
//================ MongoDB End ================//

// Add the route
server.route({
    method: 'GET',
    path:'/',
    handler: function (request, reply) {
        var _db = server.app.db;
        _db.users.find({},  {name:1, _id:1}, function (error, data) {
            reply(data);
        });
    }
});

// Start the server
server.start((err) => {
    if (err) {
        throw err;
    }
    console.log('Server running at:', server.info.uri);
});

– PM2로 서버 구동 및 재부팅 후 자동 시작 설정

1
2
3
4
npm install -g pm2
pm2 start app.js --watch
pm2 save
pm2 startup