前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >虚拟机Linux安装MongoDB

虚拟机Linux安装MongoDB

作者头像
良月柒
发布2019-03-20 16:00:30
3.9K0
发布2019-03-20 16:00:30
举报

步骤:

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

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-05,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 程序员的成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com