全栈开发【第2期】MongoDB入门之数据库安装

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 全栈开发【第2期】MongoDB入门之数据库安装

概述


MongoDB 针对不同的操作系统有不同的安装包,我们这篇入门的文章就以 Windows和CentOS7 为例进行讲解。

目录


环境搭建

  • 禁用 SELINUX=disabled
  • 下载安装文件
  • 解压下载的文件
  • 复制解压文件到运行目录
  • 设置环境变量
  • 创建数据目录

启动方式

  • 基于命令行方式启动MongoDB
  • 基于配置文件的命令行启动
  • 以守护进程方式启动MongoDB
  • 使用系统服务的方式启动

停止

  • 使用kill命令
  • shutdown命令

测试

  • 浏览器测试
  • 3T

正文


一、环境搭建


1. 禁用 SELINUX=disabled


SELinux 的工作模式(Disabled、Permissive和Enforcing)设置为Disabled

输入指令

$ vi /etc/selinux/config

配置如下:

[root@iZwz99ftqv2b7ynaocfmlnZ mongoDB]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX=disabled
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

2. 下载安装文件


2.1 官网下载

下载地址: www.mongodb.org/downloads

2.2 命令下载

$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz

3. 解压下载的文件


$ tar -xvf mongodb-linux-x86_64-3.0.6.tgz

4. 复制解压文件到运行目录


$ mkdir -p /usr/local/lib/mongodb
# 复制到指定目录
$ cp -R -n /usr/local/mongoDB/mongodb-linux-x86_64-3.6.13/. /usr/local/lib/mongodb/

5. 设置环境变量


$ vi /etc/profile
export PATH=$PATH:/usr/local/lib/mongodb/bin:$PATH

6. 创建数据目录


# mkdir -p /data/mongodata
# mkdir -pv /data/mongodata/{rs1,rs2,rs3}
# mkdir -pv /usr/local/lib/mongodb/conf

二、启动方式


2.1. 基于命令行方式启动MongoDB



执行mongod,启动MongoDB服务器,mongod有很多可配置的启动选项,可以使用mongod --help查看所有选项

  • --dbpath:指定数据目录,默认是/data/db下,每个mongod进程都需要独立的数据目录,加入有3个mongod实例,就必须要有3个独立的数据目录。当mongod启动时,会在数据目录中创建mongod.lock文件。这个文件用于防止其他mongod进程使用该数据目录。若当有一个mongd启动后,再启动另一个mongod时,若再使用刚刚已经启动mongod的目录,那么会报错。
  • --port:指定服务器监听的端口号。默认端口号为27017,要是运行多个mongod,必须指定不同的端口号

若有一个27017的端口已经使用了,那么如果启动第二个mongod的时候,若还指定27017的话,会报错。

  • --fork:以守护进程的方式运行MongoDB,创建服务进程,相当于nohup ... &nohup mongodb/bin/mongod --dbpath mongodb/0706 &mongodb/bin/mongod --dbpath mongodb/0706 --fork 效果一致
  • --logpath:指定输出日志的路径,而不是输出到命令行。如果对文件夹有写权限的话,系统会在文件不存在时创建它。它将会已有文件覆盖掉,清除原来所有的日志记录。如果想保留原来的日志,还需要使用--logappend。
  • --config:指定配置文件,加载命令行未指定的各种选项。
  • --directoryperdb:使用该参数可以将每个数据库存放在单独的目录中

比如我新建两个数据库,那么在数据目录下会自动建立数据库名一样的文件夹。启动数据库时,MongoDB会将一个文件写入local数据库的startup_log集合中,该集合包含了MongoDB的版本,所基于的系统等。

注意:

默认情况下,启动mongod时还会启动一个基本的HTTP服务器,该服务器监听的端口号比主服务的端口号大1000。这个服务提供了HTTP接口,可以查看Mongodb的一些基本信息。这些信息也可以通过shell来查看。比如说你启动的是默认端口27017,那么在浏览器打开http://10.0.0.13:28017  但是你打开的时候可能没有,因为默认管理接口是关闭的,所以在启动的时候加上开启管理接口参数--httpinterface,也就是 mongodb/bin/mongod --dbpath mongodb/0706 --fork --logpath 0706.log --httpinterface

$ mongod --dbpath=/data/mongodata/rs1 --logpath=/data/mongodata/rs1/rs1.log &

2.2. 基于配置文件的命令行启动


$ vi /usr/local/lib/mongodb/conf/rs2.conf
port = 27000
dbpath = /data/mongodata/rs2
logpath = /data/mongodata/rs2/rs2.log
smallfiles = true
fork = true
pidfilepath = /var/run/mongo.pid
$ mongod --config /usr/local/lib/mongodb/conf/rs2.conf &

2.3. 以守护进程方式启动MongoDB


$ mongod --dbpath=/data/mongodata/rs3 --logpath=/data/mongodata/rs1/rs3.log --fork --port 28000

2.4. 使用系统服务的方式启动


2.4.1 新建配置文件


$ cd /usr/local/lib/mongodb/conf
# vi  mongodb.conf
port = 27017
dbpath = /data/mongodata/rs1
logpath = /data/mongodata/rs1/rs1.log
smallfiles = true
fork = true
pidfilepath = /usr/local/run/mongo.pid
# mongo.conf 配置文件设置
[root@iZwz99ftqv2b7ynaocfmlnZ ~]# vim mongo.conf 
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongo.log
logappend=true
journal=true
quiet=true
port=27017
fork=true
bind_ip=0.0.0.0
pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}
if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
fi
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
"mongo.conf" 57L, 1310C    
$ mongod --config mongo.conf

2.4.2 新建脚本


#!/bin/sh  
    # chkconfig:  
    #MogoDB home directory  
    MONGODB_HOME=/usr/local/lib/mongodb
    #mongodb command  
    MONGODB_BIN=$MONGODB_HOME/bin/mongod
    #mongodb config file
    MONGODB_CONF=$MONGODB_HOME/conf/mongodb.conf
    #mongodb PID
    MONGODB_PID=/usr/local/run/mongo.pid
    #set open file limit
    SYSTEM_MAXFD=65535
    MONGODB_NAME="mongodb"
    . /etc/rc.d/init.d/functions
    if [ ! -f $MONGODB_BIN ]
    then
        echo "$MONGODB_NAME startup: $MONGODB_BIN not exists! "  
        exit
    fi
    start(){
       ulimit -HSn $SYSTEM_MAXFD
       $MONGODB_BIN --config="$MONGODB_CONF"  --fork ##added 
       ret=$?
       if [ $ret -eq 0 ]; then
        action $"Starting $MONGODB_NAME: " /bin/true
       else
        action $"Starting $MONGODB_NAME: " /bin/false
       fi
    }
    stop(){
        PID=$(ps aux |grep "$MONGODB_NAME" |grep "$MONGODB_CONF" |grep -v grep |wc -l) 
        if [[ $PID -eq 0  ]];then
        action $"Stopping $MONGODB_NAME: " /bin/false
        exit
        fi
        kill -HUP `cat $MONGODB_PID`
        ret=$?
        if [ $ret -eq 0 ]; then
            action $"Stopping $MONGODB_NAME: " /bin/true
            rm -f $MONGODB_PID
        else   
            action $"Stopping $MONGODB_NAME: " /bin/false
        fi
    }
    restart() {
        stop
        sleep 2
        start
    }
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        status)
        status $prog
            ;;
        restart)
            restart
            ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart}"
    esac
$ service mongod start

三、停止


3.1 查看进程,使用kill命令


注意:不能使用kill -9

3.2 在客户端进去,使用shutdown命令


> use admin;
switched to db admin
> db.shutdownServer();
server should be down...
$ service mongod stop

四、测试


打开浏览器输入http://127.0.0.1:27017


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
6天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
9天前
|
SQL 关系型数据库 MySQL
go语言中安装数据库驱动
【11月更文挑战第1天】
30 5
|
7天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
3天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
27 0
|
7天前
|
存储 NoSQL 网络协议
【赵渝强老师】MongoDB的安装与访问
本文介绍了在Linux系统上安装和部署MongoDB的详细步骤,包括安装依赖包、解压安装包、配置环境变量、创建数据目录及启动服务等。文中还提供了相关命令示例和注意事项,帮助用户顺利完成MongoDB的安装与配置。
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
81 1
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2