ubuntu

우분투에 MongoDB 설치 및 Mongo-Express 설치, 설정하기

소화자/ editor

  • 5 comments
  • 1,672 views
  • 2017년 12월 3일

빠르게 성장하고 있는 MongoDB와 MongoDB 관리를 편하게 해주는 웹기반
Mongo-Express 서버의 설치 및 설정을 우분투 기반에서 요약 정리해봅니다.

MongoDB 와 Mongo-Express

크로스 플랫폼 범용 오픈소스 무료 데이타베이스라 하면  제일 먼저 머리에 MySql이 떠올랐습니다만
요즘은 MongoDB가 많이 대세로 떠 오른 것  같습니다.

무엇보다 Node.JS와 궁합이 잘맞는 JSON(Javascript Object Notation) 타입의 데이타에
속도 곧 성능면에서도 너무 훌륭하고, 시간이 흘러 이젠 안정성도 검증되었다고 봐야 할 것 같습니다.

단지 기존에 관계형 데이타베이스를 사용하셨던 분들은 MongoDB가 Document지향형 DB라서
Collection(테이블에 비유) 과 Document(레코드에 비유) 개념을 먼저 잡고,
기존 SQL문이 아닌 프로그램 명령문식 쿼리 방식에 익숙해지실 시간이 필요하실 겁니다.

MongoDB는 크게 4가지 컴포넌트로 구성되고 간략히 설명드리면 아래와 같습니다.

1. mongodb-org-server     : 설정관리 및 시작 스크립트 등 담당
2.  mongodb-org-mongos   : 샤딩(Sharding)을 하니 실질적인 DB 엔진이라 봐야겠죠
3. mongodb-org-shell      : MongoDB 쉘로 설치후,mongo 명령으로 사용가능합니다.
4. mongodb-org-tools      : 백업등 여러가지 필요한 툴 명령모음

Mongo-Express 는  웹기반으로 동작하는 MongoDB 관리 툴로, mongo 쉘로 일일이 명령어창에서
해야되는 구질구질함과 불편함을 날려주는 깔끔한 툴입니다.

대략 감 잡으셨으니 이제 설치를 시작해보겠습니다.
참고로 제 우분투는 14.04 64비트 LTS 버젼입니다.

 

MongoDB 설치 및 삭제 – 공식 사이트 설명 참조

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
$ echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org      ## 이 명령 하나로 4가지 컴포넌트 모두 설치됨
$ sudo service mongod start/stop/restart   ## 시작/멈춤/재시작
$ mongo                                    ## 설치 확인을 위해 mongo 쉘 시작
  > help
  > show dbs
  > use admin
  > show collections
  > exit

위의 과정이 에러없이 잘 되셨다면  설치 끝 🙂

혹시 어떤 이유로 삭제를 하시고자 하신다면  아래와 같이 하시면 됩니다.

$ sudo apt-get purge mongodb-org*
$ sudo rm -r /var/log/mongodb     ## 로그파일
$ sudo rm -r /var/lib/mongodb

Mongo-Express 설치 및 설정

mongo-express 설치와 실행을 위해선 먼저 node.js 가 설치되어 있어야 합니다.
만약 설치가 되어있지 않으시다면 우분투에서 NodeJS와NVM 설치하기 를 참고하셔서 먼저 설치합니다.

$ sudo apt-get install git   ## 만약 git이 설치되어 있지 않다면 설치
$ cd ~                       ## 홈디렉토리 아래에 설치해 보겠습니다. 어디든 괜찮습니다.
$ git clone https://github.com/mongo-express/mongo-express.git  ## 다운로드
$ cd mongo-express           ## 다운로드된 디렉토리로 이동
$ npm install                ## 필요한 node 모듈 설치
$ cp config.default.js config.js # 설정을 위해 default 설정파일을 미리 복사해둠

특별한 에러가 없으셨다면 mongo-express 설치도 끝 🙂

이제 설정을 통해 실행 확인 과정을 알아보겠습니다.
먼저 복사해둔 config.js 파일을 즐겨 사용하시는 에디터로 열어봅니다.

 mongo = {
   db: 'admin',
   host: 'localhost',
   password: 'pass',
   port: 27017,
   ssl: false,
   url: 'mongodb://localhost:27017/admin',
   username: 'admin',
 };

Line 넘버 20번부터 위와 같은 부분이 보이실 겁니다.
21번 라인 db를 위에 처럼 admin으로 바꾸어 처음부터 이미 만들어져 있는 admin 데이타베이스에 접속하도록 합니다.
설치하신 분이 admin 데이타베이스에 접속 못하면 안되니까요 🙂

MongoDB는 초기 설치 후에 특별한 관리자 설정이 되어 있지 않기 때문에
username과 password는 일단 그냥 두셔도 되고,
나중에 MongoDB에 관리자 계정을 만드시면 그때 바꾸셔도 됩니다.

adminUsername: process.env.ME_CONFIG_MONGODB_ADMINUSERNAME || '',
adminPassword: process.env.ME_CONFIG_MONGODB_ADMINPASSWORD || '',

Line 넘버 75번에 위와 같이 관리자명과 암호를 설정하는 부분이 있는데,
역시 지금은 그냥 두셔도 되고,
역시 나중에 MongoDB 관리자 계정을 만드시면 그때 따옴표 사이에 넣어주시면 됩니다.

site: {
  // baseUrl: the URL that mongo express will be located at - Remember to add the forward slash at the stard and end!
  baseUrl: process.env.ME_CONFIG_SITE_BASEURL || '/',
  cookieKeyName: 'mongo-express',
  cookieSecret: process.env.ME_CONFIG_SITE_COOKIESECRET || 'cookiesecret',
  host: process.env.VCAP_APP_HOST || '192.168.0.111',
  port: process.env.VCAP_APP_PORT || 36907,
  requestSizeLimit: process.env.ME_CONFIG_REQUEST_SIZE || '50mb',
  sessionSecret: process.env.ME_CONFIG_SITE_SESSIONSECRET || 'sessionsecret',
  sslCert: process.env.ME_CONFIG_SITE_SSL_CRT_PATH || '',
  sslEnabled: process.env.ME_CONFIG_SITE_SSL_ENABLED || false,
  sslKey: process.env.ME_CONFIG_SITE_SSL_KEY_PATH || '',
 },

라인 85번부터 위와 같은 내용이 보입니다.
라인 90번의 host에는 localhost를 지우시고 컴퓨터 ip를 적어서,
네트워크상의 다른 컴퓨터에서 접속할 수 있게 해줍니다.
라인 91번의 port에는 넘버가 8081되어 있는데, 원하시는 포트 넘버가 있으시면 바꿉니다.
전 36907로 바꾸어 보았습니다.

basicAuth: {
  username: process.env.ME_CONFIG_BASICAUTH_USERNAME || 'html5around',
  password: process.env.ME_CONFIG_BASICAUTH_PASSWORD || 'enjoy',
},

라인 104번에 위의 내용이 보이고
위 설정이 웹에서 Mongo-Express에 접속했을때의 유저명과 암호 설정입니다.
초기 설정값으로 admin/pass로 설정되어 있습니다. 그대로 사용하셔도 되지만
입맛에 맞으시는 유저명과 암호를 써 줍니다.

이제 설정이 다 끝났으니 아래와 같이 Mongo-Express를 구동 시키고 브라우져에서 확인해 봅니다.

$ cd ~/mongo-express  ## 설치한 디렉토리로 이동
$ node ./app.js       ## mongo-express 서버 구동, 종료는 Ctrl+c

이제 브라우져에서 저의 경우 http://192.168.0.111:36907 로 접속하면, 유저명과 암호를 묻고,
유저명 html5around, 암호 enjoy를 입력하면 아래와 같은 화면이 나옵니다.

이제 View 버튼을 누르시면  다음과 같은 화면이 보입니다.

이것 저것 몇번만 눌러보시면 금방 느낌이 오실겁니다.

마무리

MongoDB를 잘 활용하시려면 궁합이 맞는 Node.JS를
node.js 기본 구조 구축하기(express-generator) 와 node.js에서 mongoDB사용하기(mongodb-native) 를
참조 하시어 공부하시면 좋을 것 같습니다.

Mongo-Express 같은 경우는 오픈소스의 라이센스 중에서도 모두가 사랑하는 MIT 라이센스라서
기능 더 추가하셔서, 상업용으로 팔거나 서비스하셔도 문제가 없고, 소스가 오픈되어 있으니 개인취향에
맞게 거꾸로 기능을 빼고 간략하게 수정하여 사용하셔도 좋을 것 같습니다 🙂

이 글이 누군가에게는 조금이나마 도움이 되었으면 하는 바램입니다.

소화자

존재를 드러내지 않고 무림의 배후를 조정하는 전설로만 전해지는 무엇이든 소화하는... 갑 오징어~^-^

5
Leave a Reply

avatar
2 Comment threads
3 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
소화자Koo솜틀공장Juunen Recent comment authors
newest oldest most voted
Juunen
Guest
Juunen

질문이 있습니다.
몽고 쉘을 시작하면

MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.2.12
WARNING: shell and server versions do not match
Server has startup warnings:
2017-03-22T07:30:35.190+0000 I CONTROL [initandlisten]
2017-03-22T07:30:35.190+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.
2017-03-22T07:30:35.190+0000 I CONTROL [initandlisten] ** We suggest setting it to ‘never’
2017-03-22T07:30:35.190+0000 I CONTROL [initandlisten]
2017-03-22T07:30:35.190+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.
2017-03-22T07:30:35.190+0000 I CONTROL [initandlisten] ** We suggest setting it to ‘never’
2017-03-22T07:30:35.190+0000 I CONTROL [initandlisten]

다음과 같은 오류가 뜨는데 혹시 해결 방법을 아시나요?

솜틀공장
Editor

소화자님 말씀대로 버전문제인데요.
mongoDB를 삭제하고 홈페이지에서 다시 다운받아서 설치하시면 서버와 쉘이 달라서 나오는 메세지는 해결이 될 것 같습니다.
https://www.mongodb.com/download-center#community
위 링크에서 직접 다운 받아서 설치하셔도 됩니다.

그리고 밑에 나오는 메세지는 서버의 세팅 때문에 warning이 나오는건데요, 저 메세지를 해결하시려면 해당 경로를 따라서 가보시면 메세지에서 나오는 enable, defrag파일을 보실 수 있습니다.
그 파일의 설정을 never로 바꿔주시면 해결 가능합니다.

Koo
Guest
Koo

질문이 있습니다.
현재 클라우드 서버를 사용하고 있습니다. 클라우드 서버에서 localhost를 어떤 ip주소로 바꿔야할까요
공인 ip를 집어 넣어봤는데 충돌이 일어나서 사용 할 수 없었습니다. 어떠한 방식을 사용해야할까요 ….ㅠㅠ