環境:viretualBox Redhat7.0 mongoDb3.6
步驟:
1.安裝虛擬機器:詳細請查看Linux安裝ReaHat 基本是下一步下一步即可
2.安裝MongoDb
需要工具Xshell,如果自己沒有請聯絡我給你發送
mongoDB的tar包下載地址:https://www.mongodb.com/download-center#atlas
使用xshell工具將安裝包拷貝到虛擬機器中
解壓安裝包 tar -zxvf xxxxxxxxxx.tar
移動到安裝目錄 mv mongodb-linux-x86_64-xxx /usr/local/mongodb
添加環境變數 echo "export PATH=\$PATH:/usr/local/mongodb/bin【解壓後移動過去會存在一個目錄,所以需要配置】" > /etc/profile.d/mongodb.sh (這個裡面要小心了。)
使環境變數生效 source /etc/profile.d/mongodb.sh
建立Mongodb使用者和組 useradd -r -M -s /sbin/nologin mongod
***建立啟動資料庫和開機記錄 mkdir -p /data/mongodb/{db,log}/ 【為什麼是這個請查看指令碼中配置的使用者和組】
修改許可權 chown -R mongod:mongod /data/mongodb/
配置mongoDB設定檔: vi /etc/mongod.conf
# mongod.conf# for documentation of all options, see:# http://docs.mongodb.org/manual/reference/configuration-options/# where to write logging data.systemLog: destination: file logAppend: true path: /data/mongodb/log/mongod.log# Where and how to store data.storage: dbPath: /data/mongodb/db journal: enabled: true# engine:# mmapv1:# wiredTiger:# how the process runsprocessManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile# network interfacesnet: port: 27017 bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.#security:#operationProfiling:#replication:#sharding:## Enterprise-Only Options#auditLog:#snmp:
備忘:
如果MongoDB連接埠不在27017-27019, 28017-28019之間,需要執行以下步驟:
# yum -y install policycoreutils-python
# semanage port -a -t mongod_port_t -p tcp <port_number> 27017
建立MongoDB自啟動指令碼 vi /etc/init.d/mongod
#!/bin/bash# mongod - Startup script for mongod# chkconfig: 35 85 15# description: Mongo is a scalable, document-oriented database.# processname: mongod# config: /etc/mongod.conf# pidfile: /var/run/mongodb/mongod.pid. /etc/rc.d/init.d/functions# things from mongod.conf get there by mongod reading it# NOTE: if you change any OPTIONS here, you get what you pay for:# this script assumes all options are in the config file.CONFIGFILE="/etc/mongod.conf"OPTIONS=" -f $CONFIGFILE"SYSCONFIG="/etc/sysconfig/mongod"PIDFILEPATH=`awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*(processManagement\.)?pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | cut -d "#" -f 1`mongod=${MONGOD-/usr/local/mongodb/bin/mongod}MONGO_USER=mongodMONGO_GROUP=mongodif [ -f "$SYSCONFIG" ]; then . "$SYSCONFIG"fiPIDDIR=`dirname $PIDFILEPATH`# Handle NUMA access to CPUs (SERVER-3574)# This verifies the existence of numactl as well as testing that the command worksNUMACTL_ARGS="--interleave=all"if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/nullthen NUMACTL="numactl $NUMACTL_ARGS"else NUMACTL=""fistart(){ # Make sure the default pidfile directory exists if [ ! -d $PIDDIR ]; then install -d -m 0755 -o $MONGO_USER -g $MONGO_GROUP $PIDDIR fi # Recommended ulimit values for mongod or mongos # See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings # ulimit -f unlimited ulimit -t unlimited ulimit -v unlimited ulimit -n 64000 ulimit -m unlimited ulimit -u 64000 echo -n $"Starting mongod: " daemon --user "$MONGO_USER" --check $mongod "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1" RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod}stop(){ echo -n $"Stopping mongod: " mongo_killproc "$PIDFILEPATH" $mongod RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mongod}restart () { stop start}# Send TERM signal to process and wait up to 300 seconds for process to go away.# If process is still alive after 300 seconds, send KILL signal.# Built-in killproc() (found in /etc/init.d/functions) is on certain versions of Linux# where it sleeps for the full $delay seconds if process does not respond fast enough to# the initial TERM signal.mongo_killproc(){ local pid_file=$1 local procname=$2 local -i delay=300 local -i duration=10 local pid=`pidofproc -p "${pid_file}" ${procname}` kill -TERM $pid >/dev/null 2>&1 usleep 100000 local -i x=0 while [ $x -le $delay ] && checkpid $pid; do sleep $duration x=$(( $x + $duration)) done kill -KILL $pid >/dev/null 2>&1 usleep 100000 checkpid $pid # returns 0 only if the process exists local RC=$? [ "$RC" -eq 0 ] && failure "${procname} shutdown" || rm -f "${pid_file}"; success "${procname} shutdown" RC=$((! $RC)) # invert return code so we return 0 when process is dead. return $RC}RETVAL=0case "$1" in start) start ;; stop) stop ;; restart|reload|force-reload) restart ;; condrestart) [ -f /var/lock/subsys/mongod ] && restart || : ;; status) status $mongod RETVAL=$? ;; *) echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}" RETVAL=1esacexit $RETVAL
設定MongoDB服務開機自啟動
chmod +x /etc/init.d/mongod chkconfig mongod on 啟動MongoDB服務 service mongod start
如果啟動不成功:
主要查看 啟動指令碼 .sh 檔案中的配置的環境變數是否正確, 同時查看db log的許可權是否是指令碼中配置的使用者和組,同時可執行,我給的777
驗證啟動成功:
service mongod status
mongod.service - SYSV: Mongo is a scalable, document-oriented database. Loaded: loaded (/etc/rc.d/init.d/mongod) Active: active (running) since Fri 2017-12-15 23:34:50 EST; 31min ago Process: 7648 ExecStop=/etc/rc.d/init.d/mongod stop (code=exited, status=0/SUCCESS) Process: 7677 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=0/SUCCESS) Main PID: 7688 (mongod) CGroup: /system.slice/mongod.service └─7688 /usr/local/mongodb/mongodb-linux-x86_64-3.6.0/bin/mongod -f /etc/mongod.confDec 15 23:34:49 localhost.localdomain systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....Dec 15 23:34:49 localhost.localdomain runuser[7684]: pam_unix(runuser:session): session opened for user mongod by (uid=0)Dec 15 23:34:50 localhost.localdomain mongod[7677]: Starting mongod: [ OK ]Dec 15 23:34:50 localhost.localdomain systemd[1]: Started SYSV: Mongo is a scalable, document-oriented database..
Mongodb編輯:
輸入mongo:
> db.foo.find();{ "_id" : ObjectId("5a34a3de8420293d5f46b0ee"), "name" : "xiaonanhai", "age" : "23" }> show dbs;admin 0.000GBconfig 0.000GBlocal 0.000GBtest 0.000GB>