MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明
a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案。
b MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。它支持的数据结构非常松散,会将数据存储为一个文档,数据结构由键值对(key=>value)组成,是类似于json的bson格式,字段值可以包含其它文档、数组和文档数组,因此可以存储比较复杂的数据类型。
c MongoDB最大的特点就是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
d MongoDB的主要特点(来自于网上,主要为了我们初步了解)
d.1 MongoDB提供了一个面向文档存储,操作起来比较简单和容易的非关系型数据库。
d.2 你可以在MongoDB记录中设置任何属性的索引来实现更快的排序。
d.3 你可以通过本地u或者网络创建数据镜像,这使得MongoDB含有更强的扩展性。
d.4 如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其它节点上,这就是所谓的分片。
d.5 MongoDB支持丰富的查询表达式,查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象和数组。 d.6 MongoDB使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。 d.7 MongoDB中的Map/Reduce主要是用来对数据进行批量处理和聚合操作,Map函数调用emit(key,value)遍历集合中所有的记录,将key于value传递给Reduce函数进行处理。另外Map函数和Reduce函数是使用JavaScript编写的,所以可以通过db.runCommand和mapreduce命令来执行MapReduce操作。 d.8 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
d.9 MongoDB允许在服务端执行脚本,可以用JavaScript编写某个函数,直接在服务端执行,也可以吧函数的定义存储在服务端,下次直接调用即可。
d.10 MongoDB支持各种编程语言:RUBY、PYTHON、JAVA、C++、PHP、C#等多种语言并且MongoDB的安装也非常简单。
e 因为想将日志管理集中到MongoDB,所以简单学习了一下,将学习的心得分享给大家。
f MongoDB官网:http://www.mongodb.org/
g MongoDB学习网站:http://www.runoob.com/mongodb
2.准备工作
a 通过上面简单的介绍之后我们已经了解了MongoDB的基本信息,那么接下来我们首先需要在Linux下搭建它并且来使用它。
b MongoDB包下载地址:http://www.mongodb.org/downloads
c 操作需要的软件以及系统如下:虚拟机(Vmware),虚拟机中安装的Centos系统,Xshell,Xftp, MongoDB包。
3.MongoDB安装
a 通过上面简单的准备工作之后,我们已经拥有了可以安装的包和发布的环境,如果上面没有准备充分,请自行准备,下面我们开始进行搭建环境
b 使用XShell连接Centos,连接成功后使用命令跳转到local下面创建自己的文件夹kencery,在此文件夹下面创建mongoDB文件夹,命令如下:
b.1 (1):cd usr/local/ (2):mkdir kencery (3):cd kencery/ (4):mkdir mongoDB(5):cd mongoDB/
c 然后使用Xftp将在上面下载的mongoDB包(mongodb-linux-x86_64-3.2.8.tgz)复制到mongoDB文件夹里面,并且将包解压,解压之后命名为mongoDB,如图所示:
c.1 tar -zxvf mongodb-linux-x86_64-3.2.8.tgz
c.2 mv mongodb-linux-x86_64-3.2.8 mongodb
d 解压之后跳转到mongodb下进行操作(cd mongodb/),如图所示:
e 如上图所示,您发现多了两个文件夹,一个是db,一个是logs,这两个文件夹是我们自己创建的,db文件夹的作用是存放数据库目录,logs文件夹的作用是存放mongoDB的操作日志信息,命令如下(此命令的执行在软件包解压重命名之后跳转到mongdb下面的执行):
e.1 mkdir db
e.3 mkdir logs
f 添加完成之后,启动mongoDB,验证是否安装成功,这里指定的数据库目录选项为mongodb下创建的db,命令如下,如图所示,则提示启动成功。
f.1 ./bin/mongod --dbpath /usr/local/kencery/mongoDB/mongodb/db
f.2 当执行命令的时候如上图所示,我们发现出现了错误,错误信息是:(Failed to obtain address information for hostname bogon: Temporary failure in name resolution(获取不到地址对应的主机名)),这是因为mongoDB启动需要解析hosts,所以我们打开hosts给本地IP配置主机名bogon,命令如下:
(1) vim /etc/hosts,打开编辑器之后,将(127.0.0.1 bogon)这段命令放置在编辑器最后,保存并且关闭
(2) 重新启动mongoDB,发现错误已经消失,并且mogodb已经启动。
g 验证mongoDB是否启动,输入命令lsof -i :27017,监测端口已经在使用中,所以说启动已经完成。
4.MongoDB配置
a 通过上面的MongoDB安装,我们已经将其安装成功并且启动,但是发现启动太过于麻烦,所以需要我们自己给MongoDB配置配置文件,因MongoDB开发者没有配置样例,所以需要我们自己去创建并且写入内容
b 首先我们在mongoDB解压之后的包里面进行操作,执行以下命令,打开编辑器。
b.1 vim bin/mongodb.conf
c 打开编辑器之后将如下图所示的内容写入到编辑器中,保证是正确的,如果你的安装地址和我的不一致,则需要自己修改路径,编辑完成之后保存。
d MongDB请命令参数说明:http://blog.csdn.net/fdipzone/article/details/7442162
e 使用如下命令重新启动mongoDB,看是否配置文件起作用,命令如下
e.1 ./bin/mongod --config /usr/local/kencery/mongoDB/mongodb/bin/mongodb.conf
f 验证mongoDB是否启动,输入命令lsof -i :27017,监测端口已经在使用中,所以说启动已经完成。
5.MongoDB设置为系统服务并且设置开机启动
a 通过上面简单的操作,我们已经将MongoDB配置文件配置完成,那么接下里我们将为MongoDB设置系统服务。
b.首先添加MongoDB系统服务,命令如下:vim /etc/rc.d/init.d/mongod
c 打开编辑器后,我们将下面的配置粘贴进去,然后保存
ulimit -SHn 655350
#!/bin/sh
# chkconfig: - 64 36
# description:mongod
case $1 in
start)
/usr/local/kencery/mongoDB/mongodb/bin/mongod --maxConns 20000 --config /usr/local/kencery/mongoDB/mongodb/bin/mongodb.conf
;; stop)
/usr/local/kencery/mongoDB/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()"
;; status)
/usr/local/kencery/mongoDB/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()"
;;
esac
d 保存完成之后,添加脚本执行权限,命令如下:chmod +x /etc/rc.d/init.d/mongod
e 启动MongoDB,如下图所示,则说明启动成功
f 可以使用命令service mongod stop关闭MongoDB服务。
g 将此服务设置为开机启动,命令如下:chkconfig mongod on,然后重新启动机器进行测试,发现开机服务应启动并且端口也在使用中。
h 验证mongoDB是否启动,输入命令lsof -i :27017,监测端口已经在使用中,所以说启动已经完成。
6.MongoDB设置远程服务(建议只在内网或者不可设置,不安全系数太高)
a 如果你的MongoDB运行端口使用默认的27017,你可以使用端口号为28017来访问用户界面,这是因为MongoDB的Web界面访问端口比服务的端口多1000
b 设置远程访问,既开放端口27017,28017
c 首先编辑iptables文件,打开编辑器,命令如下( vim /etc/sysconfig/iptable),输入如下信息在编辑器的最后,最后保存。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 28017 -j ACCEPT
d 重启防火墙服务,命令如下: service iptables restart
e.最后通过浏览器访问MongDB的web页面,如图所示:则说明配置已经成功。
f.因为通过远程服务访问不安全,所以我们正常是不需要配置这步的,但是如果配置了之后,我们可以通过配置文件的属性阻止其外部访问
f.1 打开mongodb.config文件,将#rest=true属性注释之后,关闭保存。
f.2 关闭并且重启mongoDB,然后在外面使用浏览器访问发现已经访问不了。
每天一点点都是进步
如果文章哪里存在问题,欢迎大家指出来,我会在第一时间修改。
MongoDB学习笔记—Linux下搭建MongoDB环境的更多相关文章
- Java学习心得之 Linux下搭建Java环境
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 Linux下搭建Java环境 1.前言2.JDK安装3.配置环境变量4. ...
- Java学习心得之 Linux下搭建JavaWeb环境
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 Linux下搭建JavaWeb环境 1. 前言2. Java安装3. t ...
- Ruby学习心得之 Linux下搭建Ruby环境
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Ruby学习心得之 Linux下搭建Ruby环境1.前言2.Linux下安装Ruby环境 一 ...
- TensorFlow笔记-02-Windows下搭建TensorFlow环境(win版非虚拟机)
TensorFlow笔记-02-Windows下搭建TensorFlow环境(win版非虚拟机) 本篇介绍的是在windows系统下,使用 Anaconda+PyCharm,不使用虚拟机,也不使用 L ...
- Linux下搭建PHP环境
转载于: http://www.uxtribe.com/php/405.html 该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件 ...
- linux 下搭建php环境
linux 下搭建php环境 1.下载apache (http://httpd.apache.org/download.cgi) 下载php组件 ( http://cn2.php.net/get/ph ...
- linux下搭建lamp环境以及安装swoole扩展
linux下搭建lamp环境以及安装swoole扩展 一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源 我安装的环境是:apache2.2.15+mysql5 ...
- Linux下搭建JSP环境
Linux下搭建JSP环境 作为一名Java EE系统架构工程师,经常需要搭配和建立JSP(Java Server Pages)的开发环境和运行环境,所以本人在平时的工作中积累了一些在Linu ...
- Linux 下搭建 Kafka 环境
Linux 下搭建 Kafka 环境 作者:Grey 原文地址: 博客园:Linux 下搭建 Kafka 环境 CSDN:Linux 下搭建 Kafka 环境 环境要求 操作系统:CentOS 7 下 ...
随机推荐
- ExtJs4之Grid详细
ExtJs博客前奏 由于这段时间事情比较杂乱,博客就主要以项目中例子来说明编写. ExtJs4中的Grid非常强大,有展示,选中,搜索,排序,编辑,拖拽等基本功能,这篇博客我就这几个功能做写累述. 1 ...
- 前端学PHP之变量范围
× 目录 [1]范围跨度 [2]函数范围 [3]global[4]预定义变量[5]超全局变量 前面的话 变量范围即它定义的上下文背景(也就是它的生效范围).在javascript中,并没有变量范围这一 ...
- java笔试题
下面有关JVM内存,说法错误的是? A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的 B.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接 ...
- Util应用程序框架公共操作类(一):数据类型转换公共操作类(介绍篇)
本系列文章将介绍一些对初学者有帮助的辅助类,这些辅助类本身并没有什么稀奇之处,如何能发现需要封装它们可能更加重要,所谓授之以鱼不如授之以渔,掌握封装公共操作类的技巧才是关键,我会详细说明创建这些类的动 ...
- ARC内存管理机制详解
ARC在OC里面个人感觉又是一个高大上的牛词,在前面Objective-C中的内存管理部分提到了ARC内存管理机制,ARC是Automatic Reference Counting---自动引用计数. ...
- C++指针和动态内存分配
指针和动态内存分配 数组与指针 数组 数组名是一个指针常量. 数组名传递数据时,传递的是地址. 数组作为函数参数时不指定第一维大小. 对象数组 A a[2] = {A(1,2)}; 执行时先调用有参数 ...
- struts2学习笔记--使用Validator校验数据
我们在进行一些操作是需要对用户的输入数据进行验证,比如网站的注册,需要对各个数据项进行数据校验,Struts2提供了一些默认的校验器,比如数字的检测,邮箱的检测,字符串长度的检测等等. 常用的Vali ...
- WebGIS开源方案中空间数据的入库、编辑、发布的操作流程
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 本开源方案的构架是:geoserver(服务器)+tomca ...
- Apple的LZF算法解析
有关LZF算法的相关解析文档比较少,但是Apple对LZF的开源,可以让我们对该算法进行一个简单的解析.LZFSE 基于 Lempel-Ziv ,并使用了有限状态熵编码.LZF采用类似lz77和lzs ...
- ApiController使用Session验证出现Null解决方案
问题描述 在服务端保存登录信息,出现异常信息 分析发现HttpContext.Current.Session为null 解决方案 执行时出报异常,要在Global.asax里添加:开启Session功 ...






