温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

RHEL6.7下通用二进制包如何安装MongoDB 3.2.4与mongoDB的php扩展

发布时间:2021-11-03 10:47:01 来源:亿速云 阅读:158 作者:柒染 栏目:关系型数据库

RHEL6.7下通用二进制包如何安装MongoDB 3.2.4与mongoDB的php扩展,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、软件介绍
   MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似于json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言, 几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
面向集合存储,易存储对象类型的数据。
模式自由。
支持动态查询。
支持完全索引,包含内部对象。
支持查询。
支持复制和故障恢复。
使用高效的二进制数据存储,包括大型对象(如视频等)。
自动处理碎片,以支持云计算层次的扩展性
支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
文件存储格式为BSON(一种JSON的扩展)
可通过网络访问

  MongoDB是开源文档数据库,提供共性能、高可用、自动扩展等。MongoDB中记录是文档,其是字段和值组成的对结构。MongoDB文档类似JSON对象,字段的值可以包含其它文档、数组、文档的数组。记录组织成collection,相当于表。参考下图:
RHEL6.7下通用二进制包如何安装MongoDB 3.2.4与mongoDB的php扩展
使用文档的优点是:
文档对应很多编程语言的内生数据对象
内嵌文档和数组减少了join的开销
动态schema支持顺畅多态

关键功能:
高性能:
mongodb提供高性能数据持久。特别是:
支持内嵌数据模型减少了数据库系统的I/O
索引支持快速查询且内嵌文档和数组可以包含键

高可用:
mongodb提供高可用的是replica sets
自动失败切换
数据冗余
replica set是一组mongodb服务器,它们维护这同一个数据集,提供冗余,增加数据可用性。

自动水平扩展:
水平扩展是mongodb的内核功能。
在集群上自动共享分布式数据
replica sets能为低延迟,高吞吐量的应用提供最终一致性读。

二、安装环境:
[root@xuegod63 ~]# uname -a
Linux xuegod63.cn 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

[root@xuegod63 ~]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.7 (Santiago)
Kernel \r on an \m

软件:mongodb-linux-x86_64-rhel62-3.2.4.tgz

三、下载安装
[root@xuegod63 ~]# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.4.tgz
or
[root@xuegod63 ~]# wget -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.4.tgz  # 下载
[root@xuegod63 ~]# tar -zxvf mongodb-linux-x86_64-rhel62-3.2.4.tgz                                 # 解压
[root@xuegod63 ~]# mv mongodb-linux-x86_64-rhel62-3.2.4 /usr/local/mongodb                         # 将解压包拷贝到指定目录

四、环境变量配置
MongoDB的可执行文件位于bin目录下,所以可以将其添加到PATH路径中:
[root@xuegod63 ~]# vim .bash_profile
PATH=$PATH:/usr/local/mongodb/bin 
[root@xuegod63 ~]# source .bash_profile

五、创建数据库存放目录
   MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以需要手动创建data目录,并在data目录中创建db目录。以下实例中我们将data目录创建于根目录下(/)。
注意:/data/db是MongoDB默认的启动的数据库路径(--dbpath)。
[root@xuegod63 ~]# mkdir -p /usr/local/mongondb/{data,logs}

设置ulimit -n和ulimit -u的值大于20000。如果ulimit的值设置过低的话,当MongoDB处于频繁访问的状态下,将会产生错误,最终导致无法连接到MongoDB实例。
[root@xuegod63 ~]# ulimit -n 25000
[root@xuegod63 ~]# ulimit -u 25000

六、创建用户mongo
[root@xuegod63 ~]# useradd -r mongo
[root@xuegod63 ~]# chown -R mongo:mongo /usr/local/mongondb/data/

七、添加配置文件启动
①可以在/usr/local/mongodb/bin/目录下使用命令:  
[root@xuegod63 ~]# mongod

②在/usr/local/mongodb/下创建conf目录添加配置文件
[root@xuegod63 ~]# mkdir -p /usr/local/mongodb/conf
[root@xuegod63 ~]# vim /usr/local/mongodb/conf/mongodb.conf
dbpath=/usr/local/mongodb/data                   //数据文件存放目录
logpath=/usr/local/mongodb/logs/mongodb.log      //日志文件存放目录
bind_ip=127.0.0.1,192.168.1.63                   //只允许通过局域网IP:192.168.1.63及本机访问
port=27017                                       //端口
fork=true                                        //以守护进程的方式启用,即在后台运行
master=true
verbose = true
vvvv = true
maxConns = 5000                                  //最大同时连接数 默认2000
objcheck = true
logappend=true                                   //使用追加的方式写日志
shardsvr=true
directoryperdb=true                               //每个数据库使用一个目录
nohttpinterface=true
noauth=true                                       //不启用验证
rest=false

③手动开启服务
[root@xuegod63 ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf  
or
[root@xuegod63 ~]# mongod --config /usr/local/mongodb/conf/mongodb.conf
[root@xuegod63 ~]# ps -efl |grep mongod |grep -v grep
1 S root      14338      1  2  80   0 - 104363 poll_s 19:17 ?       00:00:03 mongod --config /usr/local/mongodb/conf/mongodb.conf
[root@xuegod63 ~]# netstat -tunlp |grep mongod
tcp        0      0 127.0.0.1:27017             0.0.0.0:*                   LISTEN      14338/mongod

八、设置开机启动
方法一、添加开机脚本
①在/etc/init.d/目录下添加mongod脚本,脚本内容如下:
#!/bin/bash
#chkconfig: 2345 80 90
#description: mongodb
start() {
      /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf
}
stop() {
      /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown
}
case "$1" in
        start)
        start
        ;;
        stop)
        stop
        ;;
        restart)
        stop
        start
        ;;
        *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac

②添加脚本执行权限  
[root@xuegod63 ~]# chmod +x /etc/init.d/mongod

③设置开机启动 
[root@xuegod63 ~]# chkconfig mongond --add
[root@xuegod63 ~]# chkconfig mongond on 
[root@xuegod63 init.d]# service mongod restart
killing process with pid: 15302
about to fork child process, waiting until server is ready for connections.
forked process: 15430
child process started successfully, parent exiting
[root@xuegod63 init.d]# ps -efl |grep mongod |grep -v grep
1 S root      15525      1  2  80   0 - 80141 poll_s 19:47 ?        00:00:01 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf
[root@xuegod63 init.d]# netstat -tunlp |grep mongod
tcp        0      0 127.0.0.1:27017             0.0.0.0:*                   LISTEN      15724/mongod

方法二、将启动进程添加到/etc/rc.local中
[root@xuegod63 ~]# echo "/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --fork" >> /etc/rc.local
[root@xuegod63 ~]# service mongod stop
killing process with pid: 16781
[root@xuegod63 ~]# ps -efl |grep mongod |grep -v grep 
[root@xuegod63 ~]# /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --fork  
about to fork child process, waiting until server is ready for connections.
forked process: 16897
child process started successfully, parent exiting
//不需要密码的登录方式
[root@xuegod63 ~]# /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port=27017 --fork --auth
//需要权限的登录方式, 用户连接需要用户名和密码
[root@xuegod63 ~]# ps -efl |grep mongod |grep -v grep
1 S root      16897      1  2  80   0 - 98274 poll_s 20:26 ?        00:00:00 /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --fork  
[root@xuegod63 ~]# netstat -tunlp |grep mongod
tcp        0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      16897/mongod 

九、设置防火墙方便局域网内的其它服务器访问
[root@xuegod63 ~]# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT
[root@xuegod63 ~]# /etc/init.d/iptables save
[root@xuegod63 ~]# /etc/init.d/iptables restart

十、连接测试
[root@xuegod63 ~]# mongo
MongoDB shell version: 3.2.4
connecting to: test
Server has startup warnings: 
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] 
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] 
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] 
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-03-30T05:09:28.032+0800 I CONTROL  [initandlisten] 

>

#查看当前数据库
> db
test

#切到数据库 mydb
> use mydb
switched to db mydb
> db
mydb

#用javascript创建两个文档
> j = { name : "mongo" }
{ "name" : "mongo" }
> k = { x : 3 }
{ "x" : 3 }

#创建mydb数据库和testdata collection
> db.testdata.insert(j)
WriteResult({ "nInserted" : 1 })
> db.testdata.insert(k);
WriteResult({ "nInserted" : 1 })
> show collections
system.indexes
testdata
> db.testdata.find()
{ "_id" : ObjectId("54ddd717d692cfe0bd20d983"), "name" : "mongo" }
{ "_id" : ObjectId("54ddd728d692cfe0bd20d984"), "x" : 3 }
> show dbs
admin  (empty)
local  0.078GB
mydb  0.078GB
> use hahadb
switched to db hahadb
> show dbs
admin  (empty)
local  0.078GB
mydb  0.078GB
> db
hahadb
> j = { name : "mongo" }
{ "name" : "mongo" }
> show dbs
admin  (empty)
local  0.078GB
mydb  0.078GB
> db.testdata.insert(j)
WriteResult({ "nInserted" : 1 })
> show dbs
admin  (empty)
hahadb  0.078GB
local  0.078GB
mydb    0.078GB
> use mydb
switched to db mydb
> show collections
system.indexes
testdata
> db.testdata.insert(j)
WriteResult({ "nInserted" : 1 })
> db.testdata.find()
{ "_id" : ObjectId("54ddd717d692cfe0bd20d983"), "name" : "mongo" }
{ "_id" : ObjectId("54ddd728d692cfe0bd20d984"), "x" : 3 }
{ "_id" : ObjectId("54ddda64d692cfe0bd20d986"), "name" : "mongo" }
> db.testdata.insert(k)
WriteResult({ "nInserted" : 1 })
> db.testdata.find()
{ "_id" : ObjectId("54ddd717d692cfe0bd20d983"), "name" : "mongo" }
{ "_id" : ObjectId("54ddd728d692cfe0bd20d984"), "x" : 3 }
{ "_id" : ObjectId("54ddda64d692cfe0bd20d986"), "name" : "mongo" }
{ "_id" : ObjectId("54ddda7dd692cfe0bd20d987"), "x" : 3 }
> db.testdata.find({x:3})
{ "_id" : ObjectId("54ddd728d692cfe0bd20d984"), "x" : 3 }
{ "_id" : ObjectId("54ddda7dd692cfe0bd20d987"), "x" : 3 }
> exit;
[root@xuegod63 ~]# 
参考:
docs.mongodb.org/manual/tutorial/install-mongodb-on-linux/

十一、图形化管理(类似phpmyadmin) 
http://code.google.com/p/rock-php/wiki/rock_mongo_zh
下载解压修改config.php为对应的地址及端口,使用admin:admin访问即可。

十二、备份及恢复现有数据库(数据库名为blog备份到/backup目录下
[root@xuegod63 ~]# /usr/local/mongodb/bin/mongodump -h 127.0.0.1 -d blog -o /backup/blog.dmp
[root@xuegod63 ~]# /usr/local/mongodb/bin/mongorestore -h 127.0.0.1 -d blog /backup/ddc.dmp

十三、php mongo扩展安装:
php版本5.2.17编译安装,安装路径/usr/local/php
13.1、下载mongodb扩展源码
源码在http://pecl.php.net/package/mongo下载到
[root@xuegod63 ~]# wget http://pecl.php.net/get/mongo-1.2.2.tgz
[root@xuegod63 ~]# tar -zxvf mongo-1.2.2.tgz
[root@xuegod63 ~]# cd mongo-1.2.2

13.2、执行phpize来准备编译扩展的环境
[root@xuegod63 ~]# /usr/local/php/bin/phpize
运行后执行结果如下:
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519 

13.3、配置php mongo扩展
[root@xuegod63 ~]# ./configure --with-php-config=/usr/local/php/bin/php-config
--with-php-config这个参数是告诉配置脚本php-config这个程序的路径,php-config的介绍在这里
上面命令在正确配置的环境下运行结果如下:
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h

13.4、编译安装扩展
[root@xuegod63 ~]# make && make install
正确编译执行结果如下:
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

13.5、编辑php.ini文件
[root@xuegod63 ~]# vim /usr/local/php/etc/php.ini 
extension=mongo.so
一般默认的编译php的ini文件在/usr/local/php/etc/php.ini

13.6、重启服务验证安装结果
测试:
[root@xuegod63 ~]# cd /var/www/html
[root@xuegod63 ~]# vim index.php       #编辑输入下面内容
<?php
phpinfo();
?>
:wq! #保存退出
重启服务:
[root@xuegod63 ~]# service httpd restart
or
[root@xuegod63 ~]# service php-fpm restart
在客户端浏览器输入服务器IP地址,如果可以看到mongo相关的配置信息!那么mongodb的扩展就安装成功了。
http://localhost/index.php

RHEL6.7下通用二进制包如何安装MongoDB 3.2.4与mongoDB的php扩展

看完上述内容,你们掌握RHEL6.7下通用二进制包如何安装MongoDB 3.2.4与mongoDB的php扩展的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI