作者:Maurizio Turatti, 最后在Feb 25, 2016时被 Andrea Di Cesare更新

安装与设置

  • 1. 快速开始

    • Docker
    • Vagrant
    • Bare metal
  • 2. 在主机上运行 - 需要的环境
  • 3. 安装java和MongoDB
  • 4. 安装 RESTHeart
  • 5. 启动MongoDB
  • 6. 启动RESTHeart服务
  • 7. 开启MongoDB认证
    • 7.3. MongoDB认证需要的最低权限
  • 8.客户端认证和授权

1. 快读开始

Docker

在一个有JVM的Docker容器上运行RESTHeart,连接到安装MongoDB官方3版本以上镜像的Docker容器上.Docker应当被认为是开发和运行RESTHeart最好的方式没有之一。

现在我们在Github库上创建了一个谷歌云容器配置的向导。

Vagrant

Vagrant box创建的完整的开发环境已经完成了,使用的是Ubuntu 14.04版本镜像,JDK 8, MongoDB 3和最近的RESTHeart服务。如果你想知道如何改变默认的安全设置的花,你可以跳过从第2段到第六段,直接看第七段。

Bare metal(裸机)

在下面内容中可以找到完整的安装说明。

2. 在主机上运行 - 需要的环境

如果你现在什么都没有,请下载以下安装包

大多数工作可以用CLI来完成。

3. 安装Java和MongoDB

根据您的操作系统的指令安装 Java 8MongoDB并确保安装包被正确的执行(在PATH中可以找到他们的变量).

检查您机器上的JAVA和MongoDB可以通过以下命令并获得下面相似的内容。

  1. C:\Users\Administrator>java -version
  2. java version "1.8.0_45"
  3. Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
  4. Java HotSpot(TM) -Bit Server VM (build 25.45-b02, mixed mode)
  5.  
  6. C:\Users\Administrator>mongod --version
  7. db version v3.0.0
  8. git version: a841fd6394365954886924a35076691b4d149168
  9. OpenSSL version: OpenSSL 1.0.1j-fips Oct

RESTHeart已经通过了以下 MongoDB version 3.2, 3.0, 2.6 和 2.4的测试.

4. 安装RESTHeart

安装RESTHeart需要解压下载压缩包到指定的目录.

你只需要关心以下两个文件:

  • restheart.jar
  • etc/restheart.yml <- 配置文件模版(样例)

5. 启动MongoDB

为了简单起见,在一次启动的时候我们先不开启权限控制,后续我们将看看怎么开启权限认证。

你可以从shell窗口中通过mongod命令启动MongoDB,默认使用的配置文件在/data/db文件夹中,如果不存在的话,在启动之前必须手动创建。如果你不想使用默认的路径,可以使用--dbpath参数来更改数据库路径,例如:mongod --dbpath;如果你想让MongoDB后台运行可以使用--fork参数,例如mongod --fork --syslog(我运行时fork和syslog参数提示不存在,我运行时没有得到如下内容):

  1. $ mongod --fork --syslog
  2. about to fork child process, waiting until server is ready for connections.
  3. forked process:
  4. child process started successfully, parent exiting
  5.  
  6. By default MongoDB starts listening for connections on 127.0.0.1:.

6. 启动RESTHeart服务

通过CLI窗口中输入java -server -jar restheart.jar启动RESTHeart.

这样就通过默认配置启动了RESTHeart服务,默认的配置MongoDB未启用认证运行在本机, 使用默认的端口.

约定优与配置

在一个配置文件中不同的配置选项可以通过参数的形式被声明. 输入的配置文件的位置可以是绝对位置也可以是相对于restheart.jar的位置.

配置文件可以声明任意的选项来覆盖默认值: 约定优与配置 的方法是不必在配置文件中声明所有需要的值的方法的方法是一种不必在配置文件中声明所有需要的值.

想知道更多关于配置文件格式的内容请到高级配置默认配置文件部分.

在Linux, OSX 和 Solaris RESTHeart可以被当作守护进程(daemon process)启动: java -server -jar restheart.jar --fork,这样会强制关闭控制台日志并打开文件日志而不管配置文件中的配置是什么样的。

例如:

  1. $ java -jar restheart.jar
  2. ::09.968 [main] INFO org.restheart.Bootstrapper - Starting RESTHeart
  3. ::09.971 [main] INFO org.restheart.Bootstrapper - version 2.0.
  4. ::09.978 [main] INFO org.restheart.Bootstrapper - Logging to file /var/folders/yx/mgksqtzn41j41xdnv74snjpc0000gn/T/restheart.log with level INFO
  5. ::09.978 [main] INFO org.restheart.Bootstrapper - Logging to console with level INFO
  6. ::10.275 [main] INFO org.restheart.Bootstrapper - MongoDB connection pool initialized
  7. ::10.275 [main] INFO org.restheart.Bootstrapper - MongoDB version 3.2.
  8. ::10.276 [main] WARN org.restheart.Bootstrapper - ***** No Identity Manager specified. Authentication disabled.
  9. ::10.277 [main] WARN org.restheart.Bootstrapper - ***** No access manager specified. users can do anything.
  10. ::10.277 [main] INFO org.restheart.Bootstrapper - Token based authentication enabled with token TTL minutes
  11. ::10.593 [main] INFO org.restheart.Bootstrapper - HTTPS listener bound at 0.0.0.0:
  12. ::10.593 [main] INFO org.restheart.Bootstrapper - HTTP listener bound at 0.0.0.0:
  13. ::10.595 [main] INFO org.restheart.Bootstrapper - Local cache for db and collection properties enabled with TTL msecs
  14. ::10.595 [main] INFO org.restheart.Bootstrapper - Local cache for schema stores not enabled
  15. ::10.766 [main] INFO org.restheart.Bootstrapper - URL / bound to MongoDB resource *
  16. ::10.976 [main] INFO org.restheart.Bootstrapper - Embedded static resources browser extracted in /var/folders/yx/mgksqtzn41j41xdnv74snjpc0000gn/T/restheart-
  17. ::10.999 [main] INFO org.restheart.Bootstrapper - URL /browser bound to static resources browser. Access Manager: false
  18. ::11.246 [main] INFO org.restheart.Bootstrapper - Pid file /var/folders/yx/mgksqtzn41j41xdnv74snjpc0000gn/T/restheart-.pid
  19. ::11.246 [main] INFO org.restheart.Bootstrapper - RESTHeart started

现在我们可以用HAL格式或者内嵌的HAL浏览器查看是否一切正常。HAL浏览器使你可以在你平常的浏览器中浏览数据接口(DATA API)。

HAL是在API中给与资源一种一致和简单的超链接格式,使用HAL后可以使接口可以探索,数据文档可以通过接口本身被发现。总之他可以简化接口并且对客户端开发者更有吸引力。采用HAL的接口可以容易的被大多数主流编程语言的开源库使用和处理,它甚至简单到了你可以像处理其他JSON一样来处理它。

打开你的浏览器,输入http://127.0.0.1:8080/browser,查看HAL用户操作接口。

7. 开启 MongoDB 权限认证

这部分假定使用MongoDB3.2,如果使用其他版本,安全配置基本相似也有部分不同。想知道更多的话到 MongoDB官方文档

在相同系统的机器上开启带权限认证的MongoDB和链接数据库的客户端。访问可能导致localhost异常。可以使用--fork参数在后台启动MongoDB。

  1. $ mongod --fork --syslog --auth
  2. $ mongo

这部分我们将使用具有mongodb的超级管理员角色的用户来进行所有操作和访问所有资源。

但是,使用MongoDB用户最好的实践是限制用户的操作权限。例如,我们创建一个只有读权限访问一个数据库实例的用户。想得到更多的信息请访问MongoDB authentication with just enough permissions部分。

每个MongoDB的版本创建admin用户的过程都不相同。

  1. > use admin
  2. > db.createUser({
  3. user: "admin",
  4. pwd: "changeit",
  5. roles:[ "root" ]
  6. })
  1. 我们需要在RESTHeart的配置文件中提供MongoDB的权限认证信息: 点这.

我们将使用您下载的RESTHeart包中的restheart.yml样例配置文件。(可以在解压后的etc目录中找到这个文件)

$ vi etc/restheart.yml

找到并修改下面这部分内容中的用户名(user-name),密码(password)和认证的db(authentication db,创建用户的数据库,在我们上面的用例中是'admin')。

mongo-uri: mongodb://admin:changeit@127.0.0.1/?authSource=admin

现在可以通过我们配置文件启动RESTHeart了

$ java -server -jar restheart.jar etc/restheart.yml

测试数据库连接可以使用http://127.0.0.1:8080/browser的HAL浏览器

备注:etc/restheart.yml配置文件模版中开启了RESTHeart的安全认证。打开HAL浏览器后,将会问你认证信息。可以使用 etc/security.yml配置文件中定义的认证(例如:username='a',password='a')。

7.3. 使用适当权限的MongoDB用户

简单起见在上一个例子中,我们使用了MongoDB的root(或者是clusterAdmindbAdminAnyDatabase)权限用户。这样使RESTHeart可以执行任何命令来操作MongoDB中的资源。

在生产环境中,常常需要强制性的安全隔离。

为了达到这样的目的,最好的方式是这样:

  1. 使用mongo-mounts配置选项限制暴露给RESTHeart的资源;
  2. 使用较少权限的MongoDB用户: 读(read)或者读写(readWrite) 权限到指定数据库。

下面这个例子创建了一个有适当权限角色(拥有db1, db2 and db3的只读权限)的用户。

  1. > use admin
  2. > db.createUser({user: "mongousr",
  3. pwd: "secret",
  4. roles: [{role: "readWrite", db: "db1"},
  5. {role: "readWrite", db: "db2"},
  6. {role: "read", db: "db3"}
  7. ]})

listDatabases权限是列出所有数据库 (例如使用 GET动作 /, 获取根资源)  时必须的.  这个权限可以通过readWriteAnyDatabase角色或者创建一个自定义角色来获取。

dropDatabase权限是删除数据库时必须的. 这个权限可以通过dbAdmin角色或者创建一个自定义角色来获取。

8. Clients Authentication and Authorization

访问Security部分获得更多关于开启,配置和自定义用户权限和认证的内容。

原文地址:https://softinstigate.atlassian.net/wiki/display/RH/Installation+and+Setup转载请注明出处

RESTheart安装与设置的更多相关文章

  1. Hadoop的安装与设置(1)

    在Ubuntu下安装与设置Hadoop的主要过程. 1. 创建Hadoop用户 创建一个用户,用户名为hadoop,在home下创建该用户的主目录,就不详细介绍了. 2. 安装Java环境 下载Lin ...

  2. linux下MySQL安装及设置

    转自:http://www.entage.net/1/viewspace-25420 1. 关于本文    本文将以MySQL 5.0.51为例,以CentOS 5为平台,讲述MySQL数据库的安装和 ...

  3. 在Ubuntu 12.04安装和设置Samba实现网上邻居共享

    转载:http://www.startos.com/ubuntu/tips/2012031333097.html          有微小改动. Samba 是一款功能强大的共享工具,可以实现与win ...

  4. 安装、设置与启动MySql绿色版的方法

    原文:安装.设置与启动MySql绿色版的方法 1.解压 mysql-noinstall-5.1.30-win32.zip(下载地址http://dev.mysql.com/downloads/mysq ...

  5. ubuntu显卡驱动安装及设置

    转自: Ubuntu 14.04 Nvidia显卡驱动安装及设置   更换主板修复grub 引导后,无法从Nvidia进入系统(光标闪烁), 可能是显卡驱动出了问题. 1. 进入BIOS设置, 从集成 ...

  6. pycharm(windows)安装及其设置中文菜单

    pycharm(windows)安装及其设置中文菜单 1.下载 在官网(http://www.jetbrains.com/pycharm/download/#section=windows)进行下载 ...

  7. windows系统dokuwiki安装部署设置 xampp环境配置

    简单记录一次安装dokuwiki的过程 dokuwiki下载 dokuwiki下载地址 https://download.dokuwiki.org/ 下载前有一些可选项目,版本.语言.插件,可以按照需 ...

  8. mysql-5.7免安装版本设置

    mysql-5.7.22 免安装版本设置(Windows7) 一.在Mysql官网下载Mysql-5.7.22的ZIP文件  下载链接为:https://dev.mysql.com/downloads ...

  9. 苹果企业版签名分发相关问题,蒲公英签名,fir.im分发,安装ipa设置信任

    苹果企业版签名分发相关问题,蒲公英签名,fir.im分发,安装ipa设置信任蒲公英 - 高效安全的内测应用发布.管理平台https://www.pgyer.com/app/signature分发版 2 ...

随机推荐

  1. IOS--- NavigationBar标题按钮

    A.NavigationBar标题按钮 1.需求 在“首页”的导航栏中部设置一个“首页”文字+箭头按钮 统一设置样式 根据实际文本长度调整宽度 消除系统自带的点击高亮效果 点击按钮,箭头上下颠倒 gi ...

  2. Java多线程-工具篇-BlockingQueue(转)

    前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列 类,为我们快速搭建高质量的多线程程序带来极大的 ...

  3. 111_leetcode_Best Time to Buy and Sell Stock III

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  4. java09 队列Queue与Deque

    队列Queue与Deque. Enumeration Hashtable与Hashtable子类Properties(资源配置文件) 引用类型(强.软.弱.虚)与WeakHashMap Identit ...

  5. WPF Command命令模式

    //定义接口 public interface IView { bool IsChanged { get; set; } void SetBinding(); void Clear(); } //定义 ...

  6. [oracle 11g 新特性] virtual column虚拟列

    总结:虚拟列可以使用于一些特殊场合,实质是类似于函数列(即以 表中已有的列 经过函数运算得来),“虚拟列不存储在数据库中,是在执行查询时由oracle后台计算出来返回给用户”,因此虚拟列不会增加存储空 ...

  7. ThinkPHP函数详解:F方法

    我们已经了解了ThinkPHP中的S方法的用法,F方法其实是S方法的一个子集功能,仅用于简单数据缓存,并且只能支持文件形式,不支持缓存有效期,因为采用的是PHP返回方式,所以其效率较S方法较高,因此我 ...

  8. wamp配置虚拟主机

    ================================================================= 来源参考一:http://wenku.baidu.com/link? ...

  9. 浅析ASP.NET的状态保持

    ASP.NET的状态保持:1.viewstate:隐藏域,记录服务器端控件的状态,适用于页面不关闭的情况下多次与服务器交互,页面自己给自己传值:文本框的改变事件.IspostBack也依赖viewst ...

  10. Xcode8 Could not build Objective-C module 'FBSDKCoreKit'

    解决方法是: 删除/Users/Rinpe/Library/Developer/Xcode/DerivedData下对应的文件夹即可.