리눅스마스터1급 : MongoDB사용을 위한 PHP Mongo 모듈 설치
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,203 조회
- 0 추천
- 목록
본문
리눅스마스터1급 : MongoDB사용을 위한 PHP Mongo 모듈 설치
PHP는 기본적으로 mongo 모듈을 제공하지 않는다.
pecl 명령어로 다음과 같이 mongo 모듈을 설치할 수 있다.
pecl은 PHP모듈을 쉽게 설치해 주는 프로그램으로 아래 과정을 보고 있으면, mongo모듈을 다운로드한 다음 phpize, configure, make, make install 과정을 수행 하고 있는 것을 확인 할 수 있다.
|
|
|
| [root@SULinux-64Bit htdocs]# /usr/local/php/bin/pecl install mongo downloading mongo-1.3.7.tar ... Starting to download mongo-1.3.7.tar (Unknown size) ................................................................done: 608,256 bytes 49 source files, building WARNING: php_bin /usr/local/php/bin/php appears to have a suffix /bin/php, but config variable php_suffix does not match running: phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 building in /tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7 running: /tmp/pear/temp/mongo/configure checking for egrep... grep -E ==== 중간 생략 ==== checking whether to build shared libraries... yes checking whether to build static libraries... no
creating libtool appending configuration tag "CXX" to libtool configure: creating ./config.status config.status: creating config.h running: make /bin/sh /tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/libtool --mode=compile cc -I./util -I. -I/tmp/pear/temp/mongo -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/include -I/tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/main -I/tmp/pear/temp/mongo -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/lib -I/tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/util -I/tmp/pear/temp/mongo/util -I/tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/mcon -I/tmp/pear/temp/mongo/mcon -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/mongo/php_mongo.c -o php_mongo.lo mkdir .libs ==== 중간 생략 ==== cp ./.libs/mongo.so /tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/modules/mongo.so cp ./.libs/mongo.lai /tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/modules/mongo.la PATH="$PATH:/sbin" ldconfig -n /tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/modules ---------------------------------------------------------------------- Libraries have been installed in: /tmp/pear/temp/pear-build-rootc89o0B/mongo-1.3.7/modules
==== 중간 생략 ==== Build complete. Don't forget to run 'make test'.
running: make INSTALL_ROOT="/tmp/pear/temp/pear-build-rootc89o0B/install-mongo-1.3.7" install Installing shared extensions: /tmp/pear/temp/pear-build-rootc89o0B/install-mongo-1.3.7/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ running: find "/tmp/pear/temp/pear-build-rootc89o0B/install-mongo-1.3.7" | xargs ls -dils 876261 4 drwxr-xr-x 3 root root 4096 5월 14 14:04 /tmp/pear/temp/pear-build-rootc89o0B/install-mongo-1.3.7 ==== 중간 생략 ==== Build process completed successfully Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/mongo.so' install ok: channel://pecl.php.net/mongo-1.3.7 configuration option "php_ini" is not set to php.ini location You should add "extension=mongo.so" to php.ini |
|
|
|
|
php 설정파일(/usr/local/php/lib/php.ini)의 마지막에 다음 줄을 추가 한다.
아래 내용은 모듈의 디렉토리를 위 설치 과정에서 모듈이 설치된 디렉토리를 설정하며, 모듈을 사용할 수 있게 하는 설정이다.
|
|
|
| extension_dir = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ extension=mongo.so |
|
|
|
|
MongoDB관련 모듈의 로드 여부를 확인하기 위해 다음과 같이 php의 "-i"옵션을 사용하여 확인한다.
아래와 같이 mongo설정이 있다면 정상 설치된 것이다.
|
|
|
| [root@SULinux-64Bit bin]# /usr/local/php/bin/php -i |grep mongo mongo mongo.allow_empty_keys => 0 => 0 mongo.chunk_size => 262144 => 262144 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 => 0 => 0 mongo.ping_interval => 5 => 5 mongo.utf8 => 1 => 1 |
|
|
|
|
⑤ DB 연동 테스트
PHP에서 DB를 연동하는 아주 간단한 프로그램을 작성하여 테스트해 보도록 하겠다.
"/usr/local/apache/htdocs/mongodbtest.php" 파일을 다음과 같이 작성해 본다.
|
|
|
| <?php echo "DB Connect<BR>"; $mongo=new MongoClient("mongodb://sulinux:password@localhost/sulinux"); $db=$mongo->sulinux;
echo "Create sucol collection<BR>"; $collection=$db->sucol;
echo "Insert document<BR>"; $doc=array("a" => "DataBase Test"); $collection->insert($doc);
echo "Find data<BR>"; $cursor=$collection->find();
echo "Fetch data<BR>"; foreach ($cursor as $doc) { echo "Result : <FONT color=red>".$doc["a"]."</FONT><BR>"; }
echo "Drop sucol collection<BR>"; $collection->drop(); ?> |
|
|
|
|
위 프로그램은 MongoDB에 연결하고, sulinux DB를 선택하며, "sucol"이라는 컬렉션을 생성한다.
생성되 컬렉션에 "{"a" : "DataBase"}이라는 문서를 삽입하고, 삽입된 데이터는 Find 함수를 사용하여 뽑아낸다.
뽑아낸 데이터를 출력한다.
출력 후에는 “sucol"을 제거하는 간단한 프로그램이다.
웹브라우저에서 ”http://localhost/mongodbtest.php"를 호출하면 다음과 같은 결과를 볼 수 있을 것이다.
관련자료
-
이전
-
다음