MongoDB/March 2017
From charlesreid1
Covering some notes on MongoDB for the UGR wifi project.
Contents
Goals for This Page
MongoDB goals:
- Figure out remote installation procedure for MongoDB on reidmachine.party
- Get MongoDB running on remote machine
- Hello world scripts for local usage
- Adding db (term.?)
- Adding table (term.?)
- Adding document
- Query documents, all records within date range, all records matching mac address, all clients on certain network, all macs matching certain prefix pattern
- Hello world scripts for remote usage
- Remote usage if no network firewall
- Server listens on remote port for external requests
- Client sends requests out on a public port
- Get MongoDB working over stunnel
- Get MongoDB set up in a docker container with a persistent data storage volume
Helpful links
Use the already-finished instructions here:
- http://charlesreid1.com/wiki/Scapy/Wifi_Database
- https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
Once all of this is done, 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
The default port is 27017 and the default bind address is 127.0.0.1. That will make MongoDB available only locally:
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:
To get MongoDB up and running and tested locally, I will stick with the default config file.
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
You can also check if it is running:
ps aux | grep [m]ongod
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>
Alternatively, if you are on Ubuntu and starting MongoDB as a service, use the configuration file to set where MongoDB data is stored:
# Where and how to store data. storage: dbPath: /var/lib/mongodb