Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andrey Knupp Vital

[Resolvido] Instalando MongoDB com PHP

Recommended Posts

Olá gente, sei que muitos de vocês já devem ter ouvido falar sobre os bancos de dados nosql, e muito interessante, pois é um sistema bem mais estável e orientado a documentos, então .. não vamos perder tempo, porque temos muito trabalho pela frente, quem já tem PHP instalado, basta baixar os arquivos da pecl, um pacote que também

permite instalar extensões diretamentes no PHP, então vamos lá, vamos começar instalando o MongoDB:

andrey@andrey:~$ sudo apt-get install mongodb
Lendo listas de pacotes... Pronto
Construindo árvore de dependências       
Lendo informação de estado... Pronto
Os pacotes extra a seguir serão instalados:
 libboost-filesystem1.42.0 libboost-program-options1.42.0 libboost-system1.42.0 libboost-thread1.42.0 mongodb-clients mongodb-dev mongodb-server
Os NOVOS pacotes a seguir serão instalados:
 libboost-filesystem1.42.0 libboost-program-options1.42.0 libboost-system1.42.0 libboost-thread1.42.0 mongodb mongodb-clients mongodb-dev mongodb-server
0 pacotes atualizados, 8 pacotes novos instalados, 0 a serem removidos e 5 não atualizados.
É preciso baixar 10,7MB de arquivos.
Depois desta operação, 28,7MB adicionais de espaço em disco serão usados.
Você quer continuar [s/n]? y
Obter:1 http://br.archive.ubuntu.com/ubuntu/ maverick/main libboost-system1.42.0 i386 1.42.0-3ubuntu1 [30,8kB]
Obter:2 http://br.archive.ubuntu.com/ubuntu/ maverick/main libboost-filesystem1.42.0 i386 1.42.0-3ubuntu1 [52,3kB]
Obter:3 http://br.archive.ubuntu.com/ubuntu/ maverick/main libboost-program-options1.42.0 i386 1.42.0-3ubuntu1 [144kB]
Obter:4 http://br.archive.ubuntu.com/ubuntu/ maverick/main libboost-thread1.42.0 i386 1.42.0-3ubuntu1 [52,9kB]
Obter:5 http://br.archive.ubuntu.com/ubuntu/ maverick/universe mongodb-clients i386 1:1.4.4-2ubuntu2 [7.560kB]
Obter:6 http://br.archive.ubuntu.com/ubuntu/ maverick/universe mongodb-server i386 1:1.4.4-2ubuntu[1.821kB]                                                
Obter:7 http://br.archive.ubuntu.com/ubuntu/ maverick/universe mongodb-dev i386 1:1.4.4-2ubuntu[1.035kB]                                                   
Obter:8 http://br.archive.ubuntu.com/ubuntu/ maverick/universe mongodb i386 1:1.4.4-2ubuntu[8.954B]                                                        
Baixados 10,7MB em 46s (232kB/s)    

 

Isso vai baixar o Mongo, e já deixar nas pastas os arquivos em suas devidas ordens para que tudo corra bem, então, depois que terminar de baixar, vamos fazer umas coisinhas

o Mongo precisa da pasta /data/, /data/db. sem elas, ele dá erro na hora de iniciar o serviço, para isso, temos que criar esses pastas.

andrey@andrey:~$ whereis mongodb
mongodb: /etc/mongodb.conf /usr/lib/mongodb
andrey@andrey:~$ cd /usr/lib/mongodb
andrey@andrey:/usr/lib/mongodb$ ls
mongo  mongod  mongodump  mongoexport  mongofiles  mongoimport  mongorestore  mongos  mongostat  xulwrapper

andrey@andrey:/usr/lib/mongodb$ cd ..
andrey@andrey:/usr/lib$ sudo su
root@andrey:/usr/lib# mkdir /data/
root@andrey:/usr/lib# mkdir /data/db

Com essas pastas criadas, vamos iniciar o serviço. Obs: para criar essas pastas no diretório é preciso ter acesso 'root'.

Depois de criadas, podemos iniciar o serviço:

root@andrey:/usr/lib# mongod
/usr/lib/mongodb/mongod --help for help and startup options
Sat Jul 16 14:26:53 Mongo DB : starting : pid = 19155 port = 27017 dbpath = /data/db/ master = 0 slave = 0  32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations for more

Sat Jul 16 14:26:53 db version v1.4.4, pdfile version 4.5
Sat Jul 16 14:26:53 git version: nogitversion
Sat Jul 16 14:26:53 sys info: Linux roseapple 2.6.24-28-server #1 SMP Wed Aug 18 21:17:51 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jul 16 14:26:53 waiting for connections on port 27017
Sat Jul 16 14:26:53 listen(): bind() failed errno:98 Address already in use for port: 27017
Sat Jul 16 14:26:53 MiniWebServer: bind() failed port:28017 errno:98 Address already in use
Sat Jul 16 14:26:53 addr already in use
Sat Jul 16 14:26:53 warning: web admin interface failed to initialize on port 28017

 

Ok, tudo rodando .. para ter certeza mesmo, ele usa a porta 27017 para seu driver, então, vamos jogar um GET lá

andrey@andrey:/usr/lib$ GET 127.0.0.1:27017 -U
GET http://127.0.0.1:27017
User-Agent: lwp-request/5.834 libwww-perl/5.836
You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number

 

beleza .. tudo certo, então vamos continuar. Nessa parte, quem já tem o PHP instalado no linux, basta usar esse comando, para baixar os arquivos que a pecl precisa pra

fazer o download das extensões.

andrey@andrey:~$ sudo apt-get install php5-dev
Lendo listas de pacotes... Pronto
Construindo árvore de dependências       
Lendo informação de estado... Pronto
Os pacotes extra a seguir serão instalados:
 autoconf automake m4 php5-common shtool
Pacotes sugeridos:
 autoconf2.13 autoconf-archive gnu-standards autoconf-doc gettext
 php5-suhosin
Os NOVOS pacotes a seguir serão instalados:
 autoconf automake m4 php5-common php5-dev shtool
0 pacotes atualizados, 6 pacotes novos instalados, 0 a serem removidos e 5 não atualizados.
É preciso baixar 2.590kB de arquivos.
Depois desta operação, 9.449kB adicionais de espaço em disco serão usados.
Você quer continuar [s/n]? y
Obter:1 http://br.archive.ubuntu.com/ubuntu/ maverick/main m4 i386 1.4.14-3 [276kB]
Obter:2 http://br.archive.ubuntu.com/ubuntu/ maverick/main autoconf all 2.67-2ubuntu1 [569kB]
Obter:3 http://br.archive.ubuntu.com/ubuntu/ maverick/main automake all 1:1.11.1-1 [608kB]
Obter:4 http://br.archive.ubuntu.com/ubuntu/ maverick-updates/main php5-common i386 5.3.3-1ubuntu[560kB]                                                 
Obter:5 http://br.archive.ubuntu.com/ubuntu/ maverick/main shtool all 2.0.[160kB]                                                                        
Obter:6 http://br.archive.ubuntu.com/ubuntu/ maverick-updates/main php5-dev i386 5.3.3-1ubuntu[416kB]                                                    
Baixados 2.590kB em 10s (236kB/s)     

Não é diretamente a respeito da pecl, mais ela precisa desses arquivos, como o 'autoconf', 'automake' .. entretanto, não vamos pular as etapas, vamos instalar o PHP5

andrey@andrey:~$ sudo apt-get install php5
Lendo listas de pacotes... Pronto
Construindo árvore de dependências       
Lendo informação de estado... Pronto
Os pacotes extra a seguir serão instalados:
 libapache2-mod-php5 php5-cli
Pacotes sugeridos:
 php-pear
Os NOVOS pacotes a seguir serão instalados:
 libapache2-mod-php5 php5 php5-cli
0 pacotes atualizados, 3 pacotes novos instalados, 0 a serem removidos e 5 não atualizados.
É preciso baixar 5.870kB de arquivos.
Depois desta operação, 15,7MB adicionais de espaço em disco serão usados.
Você quer continuar [s/n]? y
Obter:1 http://br.archive.ubuntu.com/ubuntu/ maverick-updates/main libapache2-mod-php5 i386 5.3.3-1ubuntu9.5 [2.946kB]
Obter:2 http://br.archive.ubuntu.com/ubuntu/ maverick-updates/main php5 all 5.3.3-1ubuntu9.5 [1.120B]                                                        
Obter:3 http://br.archive.ubuntu.com/ubuntu/ maverick-updates/main php5-cli i386 5.3.3-1ubuntu9.5 [2.923kB]                                                  
Baixados 5.870kB em 24s (238kB/s)   

 

Tudo certo .. ele já baixa e faz o install, tem mais linhas depois disso, mas eu só estou colocando o básico entre as tags code, enfim .. vamos instalar a extensão

para o mongo no php.

andrey@andrey:~$ sudo su
root@andrey:/home/andrey# pecl install mongo
downloading mongo-1.2.1.tgz ...
Starting to download mongo-1.2.1.tgz (74,037 bytes)
.................done: 74,037 bytes
28 source files, building
running: phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
configure.in:3: warning: prefer named diversions
configure.in:3: warning: prefer named diversions
building in /var/tmp/pear-build-root/mongo-1.2.1
running: /tmp/pear/temp/mongo/configure
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
----------------------------------------------------------------------
Libraries have been installed in:
  /var/tmp/pear-build-root/mongo-1.2.1/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
  - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
    during execution
  - add LIBDIR to the `LD_RUN_PATH' environment variable
    during linking
  - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
  - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
running: make INSTALL_ROOT="/var/tmp/pear-build-root/install-mongo-1.2.1" install
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/mongo.so'
install ok: channel://pecl.php.net/mongo-1.2.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongo.so" to php.ini

 

Percebam que na última linha, se ocorrer tudo certo, ele vai falar pra adicionar ao php.ini a seguinte linha 'extension=mongo.so' .. então vocês podem saber

onde fica o php.ini dessa forma:

root@andrey:/home/andrey# whereis php
php: /usr/bin/php /usr/local/bin/php /usr/local/lib/php /usr/local/lib/php.ini /usr/share/man/man1/php.1.gz
root@andrey:/home/andrey# gedit /usr/local/lib/php.ini

 

Viu ? nem precisei de ctrl + f, assim é mais fácil e mais prático pra mim ..

Quando o gedit abrir o php.ini, vocês adicionam lá

extension=mongo.so

 

Depois disso, é so reiniciar o apache.

root@andrey:/home/andrey# gedit /usr/local/lib/php.ini
root@andrey:/home/andrey# /etc/init.d/apache2 restart
* Restarting web server apache2                                                                                                                               ... waiting                                                                                                                                           [ OK ]
root@andrey:/home/andrey# 

 

Beleza, mongodb ... lá vamos nós.

Criei um arquivo PHP, pra ver se o 'Objeto' mongodb está realmente adicionado ao PHP.

<?php
     $Mongo = new Mongo();
     print_r( $Mongo );

 

Saída:

root@andrey:/home/andrey# php -f /var/www/index.php
Mongo Object
(
   [connected] => 1
   [status] => 
   [server:protected] => 
   [persistent:protected] => 
)

 

Depois, alguns testes ..

<?php
     $Mongo = new Mongo();
     $Database = $Mongo->database;
     $Collection = $Database->collection;
     $Collection->insert( Array( 'nome' => 'Andrey', 'sobrenome' => 'Knupp Vital' ) );
     foreach( $Collection->find() as $Data ){
	$Dados[] = $Data;
     }
     print_r( $Dados );

 

Saída:

root@andrey:/home/andrey# php -f /var/www/index.php
Array
(
   [0] => Array
       (
           [_id] => MongoId Object
               (
                   [$id] => 4e21cde888b922055b000000
               )

           [nome] => Andrey
           [sobrenome] => Knupp Vital
       )

)
root@andrey:/home/andrey# 

 

;)

 

Vocês também podem ver na sessão de NoSQL aqui no fórum, como instala o MongoDB em servidores windows, etc .. até a próxima galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.