Linux安装mongoDB

环境: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 runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  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   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=mongod
MONGO_GROUP=mongod

if [ -f "$SYSCONFIG" ]; then
    . "$SYSCONFIG"
fi

PIDDIR=`dirname $PIDFILEPATH`

# Handle NUMA access to CPUs (SERVER-3574)
# This verifies the existence of numactl as well as testing that the command works
NUMACTL_ARGS="--interleave=all"
if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
then
    NUMACTL="numactl $NUMACTL_ARGS"
else
    NUMACTL=""
fi

start()
{
  # 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=0

case "$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=1
esac

exit $RETVAL


设置MongoDB服务开机自启动

  1. chmod +x /etc/init.d/mongod
  2. chkconfig mongod on
  3. 启动MongoDB服务
  4. 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.conf

Dec 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.000GB
config  0.000GB
local   0.000GB
test    0.000GB
> 



你可能感兴趣的:(mongoDb)