虚拟机Linux安装MongoDB

步骤:

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

原文发布于微信公众号 - 程序员的成长之路(cxydczzl)

原文发表时间:2018-09-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券