系統:centOS5.6
下載下傳mongo源碼包,pcre,epel,js
1 #wget http://downloads.mongodb.org/src/mongodb-src-r1.8.1.tar.gz
#wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz
#wget http://sourceforge.net/projects/pcre/files/pcre/8.12/pcre-8.12.tar.bz2
安裝 python :
#yum install -y python-devel
安裝scons: 下載下傳scons
tar zxf scons-2.0.1.tar.gz
cd scons-2.0.1
python setup.py install
安裝spidermonkey庫,下載下傳支援c的js api庫 點此下載下傳js-1.7.0.tar.gz
yum install -y boost boost-devel
tar zxvf js-1.7.0.tar.gz
cd js/src/
export CFLAGS="-DJS_C_STRINGS_ARE_UTF8"
make -f Makefile.ref
JS_DIST=/usr gmake -f Makefile.ref export
cd ../..
安裝pcre
tar zxf pcre-8.12.tar.gz
cd pcre-8.12
./configure --enable-utf8 --enable-unicode-properties
make && make install
cd ..
安裝MongoDB
tar zxf mongodb-src-r1.8.1.tar.gz
cd mongodb-src-r1.8.1
scons all // scons可能出現找不到pcre庫的現象(修改/etc/ld.so.conf也無用,是scons自身的問題),這時需要打開mongodb-src-r1.8.0下的SConstruct,查找【 linux2"== os.sys.platform:】,在LIBPATH後面添加上pcrecpp庫的安裝路徑,在LIBS後添加上pcrecpp庫名,再重新scons all即可(操作:vim SConstruct;原來:env.Append( LIBPATH=["/usr/lib64" , "/lib64" ] ) ;修改後env.Append( LIBPATH=["/usr/lib64" , "/lib64" ,"/usr/local/pcre/lib"]); 接下來在env.Append( LIBS=["pthread"] )後面添加 env.Append( LIBS=["libpcrecpp"] ) )
scons --prefix=/usr/local/mongo install
如果需要安裝lib和head,使用如下方式安裝
scons --prefix=/usr/local/mongo --full install
建立配置檔案
mkdir -p /usr/local/mongo/etc /usr/local/mongo/data /usr/local/mongo/log/ /usr/local/mongo/repair
vim /usr/local/mongo/etc/mongo.conf
在mongo.conf中添加下面的内容
dbpath = /usr/local/mongo/data
logpath = /usr/local/mongo/mongodb.log
repairpath = /usr/local/mongo/repair
pidfilepath = /usr/local/mongo/mongodb.pid
directoryperdb = true
logappend = true
noauth = true
port = 27017
maxConns = 1024
fork = true
rest = true
quota = true
quotaFiles = 1024
nssize = 16
啟動mongodb
ln -s /usr/local/mongo/bin/mongod /usr/bin/mongod
mongod -f /usr/local/mongo/etc/mongo.conf
看看是不是啟動起來了,但是使用這種方式管理mongodb伺服器很不明智,我們完善一下:
mkdir -p /usr/local/mongo/srv
vim /usr/local/mongo/srv/mongodb-start
添加下面的内容
#!/bin/sh
vim /usr/local/mongo/srv/mongodb-stop
#!/bin/bash
pid=`ps -o pid,command ax | grep mongod | awk '!/awk/ && !/grep/ {print $1}'`;
if [ "${pid}" != "" ]; then
kill -2 ${pid};
fi
添加執行權限
chmod a+x /usr/local/mongo/srv/mongodb-start
chmod a+x /usr/local/mongo/srv/mongodb-stop
vim /etc/rc.d/init.d/mongodb
#! /bin/sh
#
# mongodb – this script starts and stops the mongodb daemon
# chkconfig: - 85 15
# description: MongoDB is a non-relational database storage system.
# processname: mongodb
# config: /usr/local/mongo/etc/mongo.conf
# pidfile: /usr/local/mongo/mongodb.pid
PATH=/usr/local/mongo/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=mongodb
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting MongoDB... "
/usr/local/mongo/srv/mongodb-start
;;
stop)
echo -n "Stopping MongoDB... "
/usr/local/mongo/srv/mongodb-stop
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop}" >&2
exit 1
;;
esac
exit 0
添加服務
chmod a+x /etc/rc.d/init.d/mongodb
chkconfig --add mongodb
chkconfig --level 345 mongodb on
/etc/rc.d/init.d/mongodb start
php mongo 擴充安裝:
伺服器環境Cent OS 5.6 64位, php版本 5.2.17編譯安裝,安裝路徑/usr/local/php
首先下載下傳最新的php mongodb擴充源碼,源碼可以在http://pecl.php.net/package/mongo下載下傳到
wget http://pecl.php.net/get/mongo-1.2.2.tgz
tar zxf mongo-1.2.2.tgz
cd mongo-1.2.2
進入檔案夾後,首先運作phpize來準備編譯擴充的環境,phpize這個程式的介紹在這裡
<b>/usr/local/php/bin/phpize</b>
運作後執行結果如下:
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
運作後,./configure 腳本就會生成了,這個時候我們運作./configure腳本來進行配置
./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
這時用make來編譯擴充
<b>make && make install</b>
正确編譯執行結果如下:
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
完成後,請編輯你php.ini檔案增加一行
<b>extension=mongo.so</b>
一般預設的編譯php的ini檔案在
/usr/local/php/etc/php.ini
重新開機你的web伺服器或者php-fpm,列印phpinfo,如果看到mongo項表,那麼mongodb的擴充安裝成功了