MongoDB/March 2017
From charlesreid1
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 (following instructions from MongoDB, see above, 3.4.3)
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
#processManagement:
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
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
On Ubuntu, if installing via apt-get, it should be available as a service that can be started and stopped:
sudo service mongod start
Verify everything is hunky dory by checking the log file:
cat /var/log/mongodb/mongod.log
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>