专栏首页程序员的成长之路虚拟机Linux安装MongoDB

虚拟机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),作者:良月柒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 启动流程分析

    这个部分比较有意思。因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分...

    良月柒
  • 工作发狂:Mybatis 中$和#千万不要乱用!

    这是一次代码优化过程中发现的问题,在功能优化后发现部分数据查不到出来了,问题就在于一条sql上的#和$。

    良月柒
  • String、StringBuilder、StringBuffer的解析和比较?

    一、String的解析 1.String的含义 ①String是不可以被继承的,String类是final类,String类是由char[]数组来存储字符串。 ...

    良月柒
  • Centos 7下Mongodb开机无法自启动的解决方法

    这篇文章主要介绍了Centos 7下Mongodb开机无法自启动的解决方法,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

    拓荒者
  • Centos 7下Mongodb开机无法自启动的解决方法

    这篇文章主要介绍了Centos 7下Mongodb开机无法自启动的解决方法,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

    拓荒者
  • JVM故障分析及性能优化实战(I)——使用jstack定位线程堆栈信息

    前一段时间上线的系统升级之后,出现了严重的高CPU的问题,于是开始了一系列的优化处理之中,现在将这个过程做成一个系列的文章。

    IT技术小咖
  • 当CPU飙高时,它在做什么

    纯洁的微笑
  • centos7 MongoDB安装

    根据需要修改bindip地址,可监听127.0.0.1或内网地址。如果需要绑定多个ip,可采用如下格式:

    用户1161110
  • Linux PID 一网打尽

    Linux 进程 PID 大家都知道,top命令就可以很容易看到各个进程的 PID, 稍进一步top -H,我们还能够看到各个线程的ID, 即TID。今天我们想...

    扫帚的影子
  • 设置国内的源加快R包下载速度

    R语言在使用 install.packages() 安装package的时候,默认会在官方的源(https://cran.rstudio.com/)搜索R包,然...

    阿凡亮

扫码关注云+社区

领取腾讯云代金券