2011. 9. 2. 18:52
ubuntu+php에서 mongoDB 설치하기
2011. 9. 2. 18:52 in Web/PHP
APM(Apache+PHP+MySQL) 조합 이외에,
PHP+mongo db가 사용가능합니다.
mongo db를 PHP에 설치/연동하는 방법을 공유합니다.
참고로, mongodb는 X86 OS에서 2GB 크기 제약이 따릅니다.
(2011/09/06 - [HTML/JS/PHP] - Ubuntu+PHP+mongoDB 구축시 유의 사항)
되도록 mongodb는 X64 OS에서 설치되는 것이 바람직합니다.
처음, PHP를 설치해야 하는데, 이는
2011/08/03 - [HTML/JS/PHP] - VMWare+Ubuntu+APM(Apache,PHP,MYSQL)+RSYNC 로 웹 서버 환경 구축 하기
를 참고하시기 바랍니다.
mongodb를 아래와 같이 설치합니다. (주의요망)
만일 이런 경우, Ubuntu X64인 경우 spider monkey 버전이 낮아, UTF-8 형식의 스크립트 처리를 하지 못합니다. 따라서, 이를 막기 위해서, 이곳을 참고해야 합니다. 대충 따라가자면 다음과 같습니다.
하고, 마지막에
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
를 추가합니다. 물론 vi 가 편하다면 그것을 쓰십시요.
그리고 다음을 실행합니다.
해당 명령을 사용하는데, 만일 방화벽으로 막혀있다면, 다음과 같이 오류가 발생합니다.
그럼 이곳에 나와있는 pub key 값으로 다음과 같이 파일을 저장합니다.
만일, Ubuntu Desktop이 아니고 server군인 경우라면, 위 gedit가 어려울 수 있습니다.
이런 경우,
~$ wget https://t1.daumcdn.net/cfile/tistory/167B75484EB0995228
와 같이 하면 167B... 이름의 파일을 다운로드합니다.
(만일 proxy 환경이라면, ~$ sudo vi /etc/wgetrc 한뒤 proxy 세팅이 필요할지 모릅니다.)
중간의 URL은 위 public.txt를 새창으로 열기 했을때의 경로이니 참고하세요.
(그럼 아래쪽 명령은 ~$ sudo apt-key add 167B... 와 같이 실행해야 합니다.)
다음과 같이 key를 추가합니다. (wget으로 다운한 경우에는 다운한 파일명으로 pubkey 이름 변경하세요)
만일 gpg: no valid OpenPGP data found. 오류가 발생하면, 이곳 중간에 나오는 key 값을 다시 복사해서 사용하시기 바랍니다.
여기까지 오류 대응이였으며,
이제부터 설치 Step으로 들어갑니다.
이와 같이 mongodb 설치가 완료되었습니다.
그다음, mongodb php 모듈을 설치합니다.
http://www.mongodb.org/display/DOCS/PHP+Language+Center
에서 다음과 같은 명령으로 설치 가능하다고 합니다.
단, 아래와 같은 package가 설치되어 있어야 합니다.
그럼 위 명령으로 실행해 보도록 하겠습니다.
만약 proxy 환경이라면 위와 같은 오류가 발생할 수 있으며, 아래 pear 명령으로 환경 세팅을 해야 합니다.
그럼 다시 설치해 보도록 하겠습니다.
와 같이 설치 성공 메시지를 확인할 수 있습니다.
참고로, Ubuntu Server인 경우, 경우에 따라 make 과정에서 오류가 발생합니다.
그런경우 $ sudo apt-get install make를 실행하시기 바랍니다.
단, 위 메시지 마지막에 extension=mongo.so를 php.ini에 추가해라고 나옵니다.
phpinfo()를 통해 확인해 보니,
와 같이 php.ini는 /etc/php5/apache2/에 있습니다.
그럼 sudo vi /etc/php5/apache2/php.ini 혹은 sudo gedit /etc/php5/apache2/php.ini를 열고,
아래와 같이 추가&수정후 저장합니다.
만일 extension section이 있었다면, 그 이후에 찾아서 넣습니다.
물론, [extension] 없이도 되지만, 문서에 따르면 가능한 extension section에 넣으라고 합니다.
그리고 마지막으로 sudo service apache2 restart를 실행해서 apache2를 재시작 합니다.
그러면 아래와 같이 phpinfo()에서 mongo 부분이 추가됩니다!
mongo
PHP+mongo db가 사용가능합니다.
mongo db를 PHP에 설치/연동하는 방법을 공유합니다.
참고로, mongodb는 X86 OS에서 2GB 크기 제약이 따릅니다.
(2011/09/06 - [HTML/JS/PHP] - Ubuntu+PHP+mongoDB 구축시 유의 사항)
되도록 mongodb는 X64 OS에서 설치되는 것이 바람직합니다.
처음, PHP를 설치해야 하는데, 이는
2011/08/03 - [HTML/JS/PHP] - VMWare+Ubuntu+APM(Apache,PHP,MYSQL)+RSYNC 로 웹 서버 환경 구축 하기
를 참고하시기 바랍니다.
mongodb를 아래와 같이 설치합니다. (주의요망)
$ sudo apt-get install mongodb |
만일 이런 경우, Ubuntu X64인 경우 spider monkey 버전이 낮아, UTF-8 형식의 스크립트 처리를 하지 못합니다. 따라서, 이를 막기 위해서, 이곳을 참고해야 합니다. 대충 따라가자면 다음과 같습니다.
$ sudo gedit /etc/apt/sources.list |
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
를 추가합니다. 물론 vi 가 편하다면 그것을 쓰십시요.
그리고 다음을 실행합니다.
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 |
해당 명령을 사용하는데, 만일 방화벽으로 막혀있다면, 다음과 같이 오류가 발생합니다.
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 ... gpgkeys: HTTP fetch error 7: couldn't connect: Connection refused gpg: no valid OpenPGP data found. gpg: Total number processed: 0 |
그럼 이곳에 나와있는 pub key 값으로 다음과 같이 파일을 저장합니다.
$ gedit pubkey |
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.10 (Darwin) mQENBEtsQe8BCACm5G0/ei0IxyjVEp6EEtbEbWK1Q4dKaONtiCODwB8di+L8tlUd Ra5QYxeyV90C+dqdh34o79enXxT6idHfYYqDdob2/kAPE6vFi4sLmrWIVGCRY++7 RPclZuezPm1sxG1TRAYEsW0VZUE9ofdoQ8xlUZDyn2BSjG8OCT2e4orRg1pHgzw2 n3hnWqJNuJS4jxcRJOxI049THIGUtqBfF8bQoZw8C3Wg/R6pGghUfNjpA6uF9KAH gnqrC0swZ1/vwIJt9fnvAlzkqLrssYtKH0rMdn5n4g5tJLqY5q/NruHMq2rhoy3r 4MC1w8GTbP7qR83wAyaLJ7xACOKqxB3SrDFJABEBAAG0I1JpY2hhcmQgS3JldXRl ciA8cmljaGFyZEAxMGdlbi5jb20+iQE4BBMBAgAiBQJLbEHvAhsDBgsJCAcDAgYV CAIJCgsEFgIDAQIeAQIXgAAKCRCey+xGfwzrEGXbB/4nrmf/2rEnztRelmup3duI eepzEtw1cv3uHg2oZXGS6S7o5Fsk+amngaWelWKfkSw5La7aH5vL4tKFKUfuaME1 avInDIU/0IEs8jLrdSWq601HowLQcxAhqNPdaGONDtHw56Qhs0Ba8GA6329vLWgZ ODnXweiNSCDrv3xbIN6IjPyyO5AoUkxmJfD0mVtp3u5Ar7kfIw7ieGGxokaHewNL Xzqcp9rPiUR6dFw2uRvDdVRrXFUPlgVugaHKytm15JpHmQfyzQiMdYXnIz0oofJO WM/PY1iw+QJZ2M7PnfbTJeADXIc/EoOAJDRggih533SjhiCaT6FdPMMk6rCZ5cgl uQENBEtsQe8BCADlNPIJZVSL2i6H9X19YK4CpEqsjIUGISMB1cDT311WFSnhfuMs GL9xYRb8dlbyeJFFOyHNkIBmH5ekCvGRfS6qJYpcUQZZcWSjEMqBYQV5cw1efd0B ek64jfvrsLz8+YhKzn+NI8O3nyGvpEEWvOhN4hNjwkDhYbXLvAlsqagbnSMf+Htf 3lgCGYa2gLiNIqNKWCsEVAan/Er6KS39WANGXi6ih0yjReBiU8WR6Qh2ylMi2xKw yHnTOsbWxP0hqALUa7N4AEGCXS/qn+vUz/hcIbt+eUNy45qoZcTT3dZsWGfJqknh RFMIuPiej7/WY4Ugzes5NG02ecDkDkpJvrSNABEBAAGJAR8EGAECAAkFAktsQe8C GwwACgkQnsvsRn8M6xABeggAlNkqbqa12L1bgaCgnGGdCiuXB3F6/VFmSQdUKpts EuqWH6rSp30r67PupzneX++ouh+9WD5O7gJ0kP3VQJpmXjT/QnN5ANjI4kAtRZUW qCXlXOxVAeXHL5oiKz0NM23Xc2rNAyfBQY8+SUYrKBalNBq5m68g8oogX8QD5u2F x+6C+QK9G2EBDD/NWgkKN3GOxpQ5DTdPHI5/fjwYFs1leIaQjjiyJwAifxB/1+w0 VCHe2LDVpRXY5uBTefF2guhVYisKY6n5wNDaQpBmA8w17it5Yp8ge0HMN1A+aZ+6 L6MsuHbG2OYDZgAk8eKhvyd0y/pAhZpNuQ82MMGBmcueSA== =74Cu -----END PGP PUBLIC KEY BLOCK----- |
만일, Ubuntu Desktop이 아니고 server군인 경우라면, 위 gedit가 어려울 수 있습니다.
이런 경우,
~$ wget https://t1.daumcdn.net/cfile/tistory/167B75484EB0995228
와 같이 하면 167B... 이름의 파일을 다운로드합니다.
(만일 proxy 환경이라면, ~$ sudo vi /etc/wgetrc 한뒤 proxy 세팅이 필요할지 모릅니다.)
중간의 URL은 위 public.txt를 새창으로 열기 했을때의 경로이니 참고하세요.
(그럼 아래쪽 명령은 ~$ sudo apt-key add 167B... 와 같이 실행해야 합니다.)
다음과 같이 key를 추가합니다. (wget으로 다운한 경우에는 다운한 파일명으로 pubkey 이름 변경하세요)
$ sudo apt-key add pubkey OK |
여기까지 오류 대응이였으며,
이제부터 설치 Step으로 들어갑니다.
$ sudo apt-get update Ign http://extras.ubuntu.com natty InRelease Ign http://us.archive.ubuntu.com natty InRelease ... Ign http://us.archive.ubuntu.com natty-updates/universe Translation-en Reading package lists... Done $ sudo apt-get install mongodb-10gen Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: mongodb-10gen ... Done. mongodb start/running, process 2757 |
그다음, mongodb php 모듈을 설치합니다.
http://www.mongodb.org/display/DOCS/PHP+Language+Center
에서 다음과 같은 명령으로 설치 가능하다고 합니다.
$ sudo pecl install mongo |
단, 아래와 같은 package가 설치되어 있어야 합니다.
$ sudo apt-get install php5-dev php5-cli php-pear |
그럼 위 명령으로 실행해 보도록 하겠습니다.
$ sudo pecl install mongo [sudo] password for greenfish: No releases available for package "pecl.php.net/mongo" install failed |
만약 proxy 환경이라면 위와 같은 오류가 발생할 수 있으며, 아래 pear 명령으로 환경 세팅을 해야 합니다.
$ pear config-set http_proxy http://xxx.xxx.xxx.xxx:xxxx config-set succeeded |
그럼 다시 설치해 보도록 하겠습니다.
$ sudo pecl install mongo [sudo] password for greenfish: WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update downloading mongo-1.2.4.tgz ... Starting to download mongo-1.2.4.tgz (78,927 bytes) ..................done: 78,927 bytes 36 source files, building running: phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 building in /tmp/pear/temp/pear-build-rootAfIqUv/mongo-1.2.4 running: /tmp/pear/temp/mongo/configure ... Build process completed successfully Installing '/usr/lib/php5/20090626+lfs/mongo.so' install ok: channel://pecl.php.net/mongo-1.2.4 configuration option "php_ini" is not set to php.ini location You should add "extension=mongo.so" to php.ini |
참고로, Ubuntu Server인 경우, 경우에 따라 make 과정에서 오류가 발생합니다.
그런경우 $ sudo apt-get install make를 실행하시기 바랍니다.
단, 위 메시지 마지막에 extension=mongo.so를 php.ini에 추가해라고 나옵니다.
phpinfo()를 통해 확인해 보니,
Loaded Configuration File | /etc/php5/apache2/php.ini |
와 같이 php.ini는 /etc/php5/apache2/에 있습니다.
그럼 sudo vi /etc/php5/apache2/php.ini 혹은 sudo gedit /etc/php5/apache2/php.ini를 열고,
아래와 같이 추가&수정후 저장합니다.
만일 extension section이 있었다면, 그 이후에 찾아서 넣습니다.
물론, [extension] 없이도 되지만, 문서에 따르면 가능한 extension section에 넣으라고 합니다.
[extension] extension=mongo.so |
그리고 마지막으로 sudo service apache2 restart를 실행해서 apache2를 재시작 합니다.
그러면 아래와 같이 phpinfo()에서 mongo 부분이 추가됩니다!
mongo
MongoDB Support | enabled |
enabled | 1.2.4 |
Directive | Local Value | Master Value |
mongo.allow_empty_keys | 0 | 0 |
mongo.allow_persistent | 1 | 1 |
mongo.auto_reconnect | 1 | 1 |
mongo.chunk_size | 262144 | 262144 |
mongo.cmd | $ | $ |
mongo.default_host | localhost | localhost |
mongo.default_port | 27017 | 27017 |
mongo.long_as_object | 0 | 0 |
mongo.native_long | 0 | 0 |
mongo.no_id | 0 | 0 |
mongo.utf8 | 1 | 1 |
'Web > PHP' 카테고리의 다른 글
Ubuntu+PHP+mongoDB 구축시 유의 사항 (2) | 2011.09.06 |
---|---|
PHP Shell (0) | 2011.08.03 |
VMWare+Ubuntu+APM(Apache,PHP,MYSQL)+RSYNC 로 웹 서버 환경 구축 하기 (0) | 2011.08.03 |