ITPub博客

首页 > > > 虚拟机Linux安装MongoDB

虚拟机Linux安装MongoDB

作者:孤独键客 时间:2020-05-13 10:44:10 0 删除 编辑


点击上方“程序员的成长之路”,选择“置顶公众号”

技术文章第一时间送达!


步骤:

 

1.安装MongoDB

 

       mongoDB的tar包下载地址:https://www.mongodb.com/download-center#atlas

 

     解压安装包   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 inbackground

     pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile

    

    #network interfaces

   net:

     port: 27017

     bindIp: 127.0.0.1  # Listen tolocal 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=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 commandworks

   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

     # Seehttp://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 ofLinux

    #where it sleeps for the full $delay seconds if process does not respond fastenough 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服务开机自启动

 

   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.conf

    

   Dec 15 23:34:49 localhost.localdomain systemd[1]: Starting SYSV: Mongois 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 isa 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

   >


END


程序员的成长之路
好

专业、丰富、实用


『关注排版侠 孤独键客 精彩无限』 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69902700/viewspace-3160682/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
一个不羁的码农,终身学习者。公众号「程序员的成长之路」。目前就职于一家游戏公司,主要负责服务器端,以及web系统的开发工作,对Java相关知识比较擅长。

注册时间:2018-12-14

  • 博文量
    793
  • 访问量
    119719