ubuntu14.04 mongodb c++ driver安装

来源:互联网 发布:informatica linux 编辑:程序博客网 时间:2024/06/16 03:43

安装mongodb

1)安装

mongdb数据库安装比较简单,直接输入
$sudo apt-get install mongodb
运行
wu@wu-VirtualBox:~$ mongoMongoDB shell version: 2.4.9connecting to: testServer has startup warnings: Thu Apr  7 08:50:31.670 [initandlisten] Thu Apr  7 08:50:31.671 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.Thu Apr  7 08:50:31.671 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).Thu Apr  7 08:50:31.671 [initandlisten] **       See http://dochub.mongodb.org/core/32bitThu Apr  7 08:50:31.672 [initandlisten] > 

这时候mongodb就安装成功了。

2)设置mongodb自启动

默认情况下是配置文件启动的,如下

ubuntu@ubuntu:~$ ps aux | grep mongomongodb   8618  0.9  3.7 233952 35932 ?        Ssl  07:19   1:11 /usr/bin/mongod --config /etc/mongodb.confubuntu   11461  0.0  0.1   3748  1020 pts/0    S+   09:19   0:00 grep --color=auto mongo

但是,机器重启之后mongod不会自启动,在运行会出现

ubuntu@ubuntu:~$ sudo rebootubuntu@ubuntu:~$ mongoMongoDB shell version: 2.4.9connecting to: testTue May 17 09:23:00.632 Error: couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145exception: connect failed

这时候再通过配置文件启动,有了

ubuntu@ubuntu:~$ /usr/bin/mongod --config /etc/mongodb.confubuntu@ubuntu:~$ mongoMongoDB shell version: 2.4.9connecting to: testServer has startup warnings: Thu Jan  1 00:00:11.969 [initandlisten] Thu Jan  1 00:00:11.969 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.Thu Jan  1 00:00:11.971 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).Thu Jan  1 00:00:11.972 [initandlisten] **       See http://dochub.mongodb.org/core/32bitThu Jan  1 00:00:11.972 [initandlisten] > 

进入正题:如何开机自启动?

进入超级用户编辑/etc/rc.local,在最后一行的前面加入

mongod --dbpath=/var/lib/mongodb --fork --logappend --logpath=/var/log/mongodb/mongodb.log --journal

这时候在次开机重启的时候,没问题了,大功告成。

上面那句换成下面这句应该也行吧,没有尝试

/usr/bin/mongod --config /etc/mongodb.conf

安装c++driver

  1. 下载driver

到mongodb官网下载驱动,我用的驱动版本driver-1.0.0。安装教程参考这里,

  1. 安装

driver的安装依赖于scons这个工具,安装比较简单,直接运行

$sudo apt-get install scons

开始安装driver

$unzip mongo-cxx-driver-legacy-1.0.0.zip$cd mongo-cxx-driver-legacy-1.0.0/$sudo scons --prefix=/usr/local install

运行过程中可能会报错停止,这种情况一般就是一些依赖库没有装,比如boost库,接着再用apt-get安装相应的库,然后重新安装。如果没有报错,这样就算是安装完成了

测试driver

官网给出了测试用例,这里我就直接拿过来了,命名tutorial.cpp

#include <cstdlib>#include <iostream>#include "mongo/client/dbclient.h" // for the drivervoid run() {  mongo::DBClientConnection c;  c.connect("localhost");}int main() {    mongo::client::initialize();    try {        run();        std::cout << "connected ok" << std::endl;    } catch( const mongo::DBException &e ) {        std::cout << "caught " << e.what() << std::endl;    }    return EXIT_SUCCESS;}

但是,官网编译指令是这样的,我运行的时候不好使,老是报错。

g++ tutorial.cpp -pthread -lmongoclient -lboost_thread-mt -lboost_system -lboost_regex -o tutorial

询问大神之后,改成这样

ubuntu@ubuntu$ g++ tutorial.cpp -pthread -lmongoclient -lboost_thread -lboost_system -lboost_regex -o tutorial

如果没有报错,生成了可执行文件tutorial,运行

ubuntu@ubuntu$ ./tutorialconnected ok

恭喜你,安装成功了。

报错:我在编译过程报错了,全都是同样的错误,错误解决了,说的是一大堆关于ssl的未定义引用,这里只是截取了一部分:
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libmongoclient.a(sock.o): In function mongo::Socket::~Socket()':
(.text+0x1086): undefined reference to
SSL_shutdown’

以为是ssl库的问题,但是装了也不行,也不知道怎么回事,然后将驱动卸载重装,稀里糊涂的就好了
卸载方式如下:对应路径可能不太一样,自己找到之后删除

$cd mongo-cxx-driver-legacy-1.0.0/$scons -c $sudo rm /usr/local/lib/libmongoclient.a$sudo rm -rf /usr/local/include/mongo

===============2016.5.21===============
今天发现了上面的报错问题是由于动态库没有包含进来
编译指令最后加上库的位置,改成这样:

ubuntu@ubuntu$ g++ tutorial.cpp -pthread -lmongoclient -lboost_thread -lboost_system -lboost_regex -o tutorial -L /usr/local/lib

上述问题解决了。按理说这种库的路径是系统指定好的,没有必要再自己指定的,还是修改动态库默认的加载路径:

$ sudo echo "/usr/local/lib" >> /etc/ld.so.conf$ sudo ldconfig

题外话:装mongodb的php驱动,只需要apt-get install php5-mongo即可

0 0