From charlesreid1

Revision as of 07:26, 30 March 2017 by Admin (talk | contribs) (→‎Ubuntu)

Covering some notes on MongoDB for the UGR wifi project.

MongoDB goals:

  • Get it set up and working locally with a test database script
    • Add records
    • Drop records
    • Query records - for all records within a date range, for all records matching a mac address, for all clients on a certain network, for all macs matching a certain prefix pattern
  • Get MongoDB working over stunnel
  • Get MongoDB set up in a docker container with a persistent data storage volume

Use the already-finished instructions here:

Also use the PyMODM library:

Installing

Mac

On a Mac, to test things out:

brew install mongodb --with-openssl
pip install pymodm

Ubuntu

On Ubuntu, the eventual server platform - do not apt-get install mongodb! It is crusty and an entire major version out of date.

Instead, follow MongoDB instructions here: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
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
sudo apt-get update
sudo apt-get install -y mongodb-org

To get Python interface to MongoDB:

apt-get install python-pip    # may be necessary
pip install pymodm

Configuration File

Path to config files

On a Mac, the configuration file should be located in /usr/local/etc/mongod.conf.

On Unbuntu, the config file should be in /etc/mongod.conf.

Default config files

Here are the contents of the default configuration file:

mongod.conf (homebrew default, v 3.4.2)

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

mongod.conf (ubuntu aptitude default, 2.6.10)

# mongodb.conf

# Where to store the data.
dbpath=/var/lib/mongodb

#where to log
logpath=/var/log/mongodb/mongodb.log

logappend=true

bind_ip = 127.0.0.1
#port = 27017

# Enable journaling, http://www.mongodb.org/display/DOCS/Journaling
journal=true

# Enables periodic logging of CPU utilization and I/O wait
#cpu = true

# Turn on/off security.  Off is currently the default
#noauth = true
#auth = true

# Verbose logging output.
#verbose = true

# Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck = true

# Enable db quota management
#quota = true

# Set oplogging level where n is
#   0=off (default)
#   1=W
#   2=R
#   3=both
#   7=W+some reads
#oplog = 0

# Diagnostic/debugging option
#nocursors = true

# Ignore query hints
#nohints = true

# Disable the HTTP interface (Defaults to localhost:27018).
#nohttpinterface = true

# Turns off server-side scripting.  This will result in greatly limited
# functionality
#noscripting = true

# Turns off table scans.  Any query that would do a table scan fails.
#notablescan = true

# Disable data file preallocation.
#noprealloc = true

# Specify .ns file size for new databases.
# nssize = <size>

# Accout token for Mongo monitoring server.
#mms-token = <token>

# Server name for Mongo monitoring server.
#mms-name = <server-name>

# Ping interval for Mongo monitoring server.
#mms-interval = <seconds>

# Replication Options

# in replicated mongo databases, specify here whether this is a slave or master
#slave = true
#source = master.example.com
# Slave only: specify a single database to replicate
#only = master.example.com
# or
#master = true
#source = slave.example.com

# Address of a server to pair with.
#pairwith = <server:port>
# Address of arbiter server.
#arbiter = <server:port>
# Automatically resync if slave data is stale
#autoresync
# Custom size for replication operation log.
#oplogSize = <MB>
# Size limit for in-memory storage of op ids.
#opIdMem = <bytes>

# SSL options
# Enable SSL on normal ports
#sslOnNormalPorts = true
# SSL Key file and password
#sslPEMKeyFile = /etc/ssl/mongodb.pem
#sslPEMKeyPassword = pass

Starting

Starting Using Mongod Command

The location of the mongo daemon mongod should be in your PATH, but if not, enter the full path to the binary when running the mongod command. This will use the default configuration file.

<path to binary>/mongod

Starting Mongod with Specified Configuration File

To start with a specified config file, use the -f flag:

mongod -f /usr/local/etc/mongod.conf

Starting Mongod with Specified Data Directory

To specify the path to a directory to use as the database directory, use the --dbpath flag:

mongod --dbpath <path to data directory>