标签归档:MongoDB

CentOS安装MongoDB及PHP-Mongo(yum方式)

1、添加yum源

# vi /etc/yum.repos.d/10gen.repo

[10gen] 

name=10gen Repository 

baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 

gpgcheck=0

:wq

2、安装

# yum install mongo-10gen-server
# yum install mongo-10gen

3、安装php-mongo

# wget http://pecl.php.net/get/mongo-1.2.2.tgz
# tar zxf mongo-1.2.2.tgz
# cd mongo-1.2.2

4、运行phpize来准备编译扩展的环境

# /usr/bin/phpize

Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

若没有phpize文件,则安装

# yum install php-devel

5、运行后,./configure 脚本就会生成了,这个时候我们运行./configure脚本来进行配置。–with-php-config这个参数是告诉配置脚本php-config这个程序的路径

# ./configure --with-php-config=/usr/bin/php-config
# make && make install

6、在php.ini中加上一句声明

# vi /etc/php.ini
extension=mongo.so

可能遇到的错误

1、执行mongod命令时报错

ERROR: dbpath (/data/db) does not exist.

解决方法:创建db目录

# mkdir -p /data/db
# chown -R root /data
# mongod --dbpath /data/db

执行

# mongod

系统运行至

waiting for connections on port 27017

在浏览器中访问

http://localhost:27017

浏览器返回

It looks like you are trying to access MongoDB over HTTP on the native driver port.

此时启动mongodb服务将不会出现failed

# service mongod start

2、27017端口被占用

查询进程,kill之

# ps -ef|grep 'mongo\|PID'
# kill -9 %PID%

3、在phpinfo中找不到mongo扩展,换句话说就是mongo扩展添加失败

http://php.net/manual/zh/mongo.installation.php#mongo.installation.fedora

按照上面网站的方法成功解决

执行命令,重新安装mongo服务(可选)

# pecl install mongo

查看mongo.so所在目录和php.ini中的extension_dir路径是否相同

# php -i|grep extension_dir
extension_dir => /usr/lib64/php/modules => /usr/lib64/php/modules
# pwd
/usr/lib64/php/modules

如果依旧不行,可能是对于CentOS,系统上默认的 Apache 设置禁止请求产生网络连接,意味着当连接到数据库,驱动会得到一个 “Permission denied” 错误。当你遇上这个问题,可以试试运行:

# /usr/sbin/setsebool -P httpd_can_network_connect 1

然后重启 Apache。在 SELinux 下也会产生这个问题。