MongoDB là một mã nguồn mở và là một tập tài liệu dùng cơ chế NoSQL để truy vấn, nó được viết bởi ngôn ngữ C++. Chính vì được viết bởi C++ nên nó có khả năng tính toán với tốc độ cao chứ không giống như các hệ quản trị CSDL hiện nay. Thay vì lưu trữ dữ liệu dưới dạng bảng và các tuple như trong các CSDL quan hệ thì nó lưu trữ dữ liệu dưới dạng JSON (trong MongoDB được gọi là dạng BSON vì nó lưu trữ dưới dạng binary từ 1 JSON document). Hôm nay tôi sẽ hướng dẫn các bạn cài đặt và cấu hình mongodb trên centos 6. I. Cài đặt mongodb 1. Nâng cấp gcc Để cài đặt phiên bản mongodb 3.2 ta cần nâng cấp lên gcc 4.8.2. Ta sẽ sử dụng devtoolset-2 để có thể nâng cấp gcc Import key và tải về repository nơi lưu trữ devtoolset-2 Mã: rpm --import http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern Mã: wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo Tiến hành cài đặt các gói công cụ cần thiết Mã: yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ Thay đổi gcc mặc định Sử dụng câu lệnh sau và kiểm tra phiên bản: Mã: scl enable devtoolset-2 bash Thay thế đường dẫn và liên kết Mã: export CC=/opt/rh/devtoolset-2/root/usr/bin/gcc export CXX=/opt/rh/devtoolset-2/root/usr/bin/g++ export CPP=/opt/rh/devtoolset-2/root/usr/bin/cpp export LD=/opt/rh/devtoolset-2/root/usr/bin/ld Mã: ln -sf /opt/rh/devtoolset-2/root/usr/bin/gcc /usr/bin/gcc ln -sf /opt/rh/devtoolset-2/root/usr/bin/g++ /usr/bin/g++ ln -sf /opt/rh/devtoolset-2/root/usr/bin/c++ /usr/bin/c++ ln -sf /opt/rh/devtoolset-2/root/usr/bin/cpp /usr/bin/cpp 2. Cài đặt scons Tải về gói cài đặt Mã: mkdir –p setup/ wget ftp://rpmfind.net/linux/sourceforge/s/sc/scons/scons/2.3.3/scons-2.3.3-1.noarch.rpm Tiến hành cài đặt Mã: rpm -ivh scons-2.3.3-1.noarch.rpm 3. Cài đặt mongodb Tải về gói cài đặt moongodb 3.2.12 Mã: wget http://downloads.mongodb.org/src/mongodb-src-r3.2.12.tar.gz Giải nén và chạy lệnh để tiến hành build, install Mã: tar -zxf mongodb-src-r3.2.12.tar.gz cd mongodb-src-r3.2.12 scons all scons install II. Cấu hình và khởi động mongodb 1. Tạo thư mục lưu trữ dữ liệu Mã: mkdir –p /data/db mkdir –p /data/db1 2. Sao chép tập tin cấu hình vào thư mục /etc Mã: cp /root/setup/mongodb-src-r3.2.12/rpm/mongod.conf /etc/ Mã: vi /etc/mongod.conf Thêm 2 dòng này vào để sử dụng cho việc chứng thực Mã: #security: security: authorization: enabled 3. Sao chép các tập tin nhị phân Sử dụng các lệnh sau: Mã: cp /root/setup/mongodb-src-r3.2.12/build/opt/mongo/mongod /usr/local/bin/ cp /root/setup/mongodb-src-r3.2.12/build/opt/mongo/mongo /usr/local/bin/ cp /root/setup/mongodb-src-r3.2.12/build/opt/mongo/mongoperf /usr/local/bin/ cp /root/setup/mongodb-src-r3.2.12/build/opt/mongo/mongos /usr/local/bin/ chmod 755 /usr/local/bin/mongod /usr/local/bin/mongo /usr/local/bin/mongos /usr/local/bin/mongoperf 4. Cấp quyền thư mục log, run Mã: chmod 755 /var/run/mongodb /var/log/mongodb 5. Xóa thư mục cài đặt của mongodb để giải phóng bộ nhớ Mã: cd /root/setup/ rm -rf mongodb-src-r3.2.12 III. Kiểm tra và tạo superuser 1. Kiểm tra và thực hiện một vài ví dụ Chạy câu lệnh sau Mã: /usr/local/bin/mongod -port 27017 --fork --dbpath /data/db1 --logpath /var/log/mongodb/mongodb.log --logappend Đăng nhập vào Mã: mongo Ví dụ Mã: > use aluhost > db.createCollection("hosting") > show collections > show dbs 2. Tạo superuser Đăng nhập vào mongodb Mã: mongo Thực hiện các lệnh sau Mã: > use admin > db.createUser( { user: "root", pwd: "admin123", roles: [ { role: "root", db: "admin" } ] }) >exit Bạn có thể thay thế tên user và password theo nhu cầu của bạn 3. Tạo script khởi động và dừng mongodb Mã: vi /etc/init.d/mongod Nội dung của tập tin là: Mã: #!/bin/bash mongod=/usr/local/bin/mongod mongod_log=/var/log/mongodb/mongodb.log prog=mongod.sh RETVAL=0[/SIZE][/FONT] [FONT=Times New Roman][SIZE=4]stop() { grep_mongo=`ps aux | grep -v grep | grep "${mongod}"` if [ ${#grep_mongo} -gt 0 ] then echo "Stop MongoDB." PID=`ps ax | grep -v grep | grep "${mongod}" | awk '{ print $1 }'` `kill -9 ${PID}` RETVAL=$? else echo "MongoDB is not running." fi } start() { grep_mongo=`ps aux | grep -v grep | grep "${mongod}"` if [ -n "${grep_mongo}" ] then echo "MongoDB is already running." else echo "Start MongoDB." /usr/local/bin/mongod --auth --fork --dbpath /data/db1 --logpath /var/log/mongodb/mongodb.log --logappend RETVAL=$? fi } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $prog {start|stop|restart}" exit 1 esac exit $RETVAL Lưu lại và cấp quyền cho nó: Mã: chmod 755 /etc/init.d/mongod 4. Tiến hành khởi động lại mongodb Sử dụng lệnh Mã: service mongod restart 5. Kiểm tra việc xác thực: 5.1 Đăng nhập không xác thực Mã: mongo -port 27017 Thực hiện một số lệnh: Mã: > use aluhost > show collections 2017-02-07T01:47:49.613-0500 E QUERY [thread1] Error: listCollections failed: { "ok" : 0, "errmsg" : "not authorized on aluhost to execute command { listCollections: 1.0, filter: {} }", "code" : 13 } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype._getCollectionInfosCommand@src/mongo/shell/db.js:773:1 DB.prototype.getCollectionInfos@src/mongo/shell/db.js:785:19 DB.prototype.getCollectionNames@src/mongo/shell/db.js:796:16 shellHelper.show@src/mongo/shell/utils.js:754:9 shellHelper@src/mongo/shell/utils.js:651:15 @(shellhelp2):1:1 Ta thấy thông báo lỗi hiện ra do chưa xác thực. 5.2 Đăng nhập sử dụng xác thực Mã: mongo -port 27017 -u "root" -p "admin123" -authenticationDatabase "admin" Thực hiện một số lệnh: Mã: > use aluhost switched to db aluhost > show collections hosting > db.createCollection("domain") { "ok" : 1 } > show collections domain hosting Không có lỗi nào xảy ra điều này cho thấy ta đã thành công. IV. Cài đặt php-mongo Ta cần cài đặt php trước khi thực hiện bước này. Tham khảo bài viết này: Tải gói cài đặt về Mã: wget https://pecl.php.net/get/mongo-1.6.8.tgz Giải nén và tiến hành cài đặt Mã: tar xzf mongo-1.6.8.tgz cd mongo-1* phpize ./configure --enable-mongo --with-php-config=php-config --prefix=/usr/local make && make install Lưu ý: Ta cần tìm xem phpize, php-config nằm ở đâu trong hệ thống bằng câu lệnh này Mã: find / -name phpize find / -name php-config Thêm extension mongo.so vào trong tập tin php.ini rồi tiến hành khởi động lại để áp dụng thay đổi Mã: vi /usr/local/lib/php/php.ini Mã: ;extension=php_pgsql.dll ;extension=php_pspell.dll ;extension=php_shmop.dll extension=mongo.so Bạn có thể tìm tập tin đó bằng cách sử dụng lệnh này Mã: find / -name php.ini Lưu tập tin và khởi động lại để áp dụng thay đổi Mã: service httpd restart V. Kiểm tra sau khi cài đặt Sử dụng lệnh sau: Mã: php –i | grep mongo Kết quả: Mã: mongo mongo.allow_empty_keys => 0 => 0 mongo.chunk_size => 261120 => 261120 mongo.cmd => $ => $ mongo.default_host => localhost => localhost mongo.default_port => 27017 => 27017 mongo.is_master_interval => 15 => 15 mongo.long_as_object => 0 => 0 mongo.native_long => 1 => 1 mongo.ping_interval => 5 => 5 OLDPWD => /root/setup/mongo-1.6.8 _SERVER["OLDPWD"] => /root/setup/mongo-1.6.8 Kiểm tra thông qua tập tin phpinfo.php