Содержание

Денвер и MongoDB

MongoDB — документо-ориентированная СУБД с открытым исходным кодом, не требующая описания схемы таблиц.

Как и любой системы, у MongoDB есть свои прелести и недостатки. Установить сервер MongoBD на unix-подобные системы не составляет ни какого труда, но давайте посмотрим как это можно сделать под Windows.

Вся установка пройдет в четыре этапа:

  1. Установка расширения для PHP.
  2. Установка сервера MongoDB.
  3. Проверка работы сервера.
  4. Привязка запуска и остановки сервера MongoDB к запуску и остановке Денвера.
  5. Установка клиента MongoDB.

Внимание! Работать мы будем с папкой в которую вы установили Денвер, а не с виртуальным диском, который создает Денвер. Это критично для установки служб Windows. Для краткости обозначим путь к этой папке как [Денвер].

Установка расширения для PHP

Первое, что нужно сделать, это найти и скачать расширение для PHP. Для этого рекомендую посетить страничку посвященную установке расширения на сайте php.net и прочесть раздел установка под Windows (тут есть ссылка на список различных версий расширения).

Хочу заметить что в каждом архиве есть сборки для различных версий PHP и VC Библиотек (для WinXP берите файлы с vc6, для Win7 можно и более старшие, vc9 к примеру). Так, что выбирайте именно то, что вам нужно.

Если вам не критична версия библиотек, то можете скачать их тут: php_mongo-1.1.4.zip.

Файл php_mongo.dll из архива переносим в папку расширений PHP ([Денвер]/usr/local/php5/ext/).

Открываем файл php.ini ([Денвер]/usr/local/php5/php.ini) и добавляем следующую строку:

extension=php_mongo.dll

Я рекомендую внести ее в блок Dynamic Extensions, в алфавитном порядке.

Теперь пробуем запустить Денвер. Если запуск произошел без ошибок, то расширение заработало, иначе ищите другую библиотеку.

При запуска команды phpinfo() в выводе появится новый блок «Mongo».

Установка сервера MongoDB

Сервер MongoDB будет установлен как служба Windows.

Дистрибутив MongoDB можно найти на официальном сайте mongodb.org. Прошу обратить внимание, что начиная с версии v2.2, MongoDB не поддерживается Windows XP.

Помещаем все содержимое архива в папку [Денвер]/usr/local/mongo.

В указанной папке создаем папку data ([Денвер]/usr/local/mongo/data) - тут будем хранить базы данных, и папку logs ([Денвер]/usr/local/mongo/data), в которую будут складываться логи сервера. Хочу обратить ваше внимание, на то что в некоторых версиях сервера, при установки нужно будет указать вместо папки логов, файл логов, который создастся автоматически при установке.

Открываем утилиту cmd (WinXP: Пуск → Выполнить → cmd; Win7: Пуск, в строке поиска набираем cmd и через правую клавишу «Запуск от имени администратора»). И переходим в утилите в папку [Денвер]/usr/local/mongo/bin.

Для тех кто не помнит/не знает dos команд:
<Буква диска>: - переход на указанный диск (к примеру, D:).
cd <папка1>/<папка2>/<папка3> - переход в указанную папку (к примеру, cd web/usr/local/mongo/bin).

Находясь в папке с сервером набираем следующую команду:

mongod.exe --install --dbpath=[Денвер]\usr\local\mongo\data --logpath=[Денвер]\usr\local\mongo\logs
или
mongod.exe --install --dbpath=[Денвер]\usr\local\mongo\data --logpath=[Денвер]\usr\local\mongo\logs\logs.txt
(если инсталятор попросит указать файл в параметре logpath)

Эта команда установит службу MongDB. Проверить работу службы можно командами:

net start mongodb
net stop mongodb

Если проблем с запуском нет, то все хорошо и можно работать. Иначе качаем другую версию сервера (перед установкой нового сервера не забываем деинсталировать старый: mongod.exe –uninstall).

Проверка работы сервера

Для проверки создаем и запускаем простой PHP скрипт:

PHP:
 
<?php
  $mongo = new Mongo();
  echo $mongo->connected;

Если после запуска скрипта вы увидели 1, то все хорошо, иначе правим ошибки.

Привязка службы MongoDB к Денверу

Служба будет запускаться всякий раз как запускается система. Однако можно привязать запуск и остановку службы к Денверу.

Для начала запретим автоматический запуск службы. Для этого нажимаем правой клавишей на «Мой компьютер» и выбираем пункт «Управление».

Далее «Службы и приложения» → «Службы» → ищем в списке «MongoDB», двойной клик. В разделе «тип запуска» выбираем «Вручную».

Теперь идем в папку [Денвер]/denwer/scripts/init.d/ и создаем файл mongo.pl, в который вносим следующий текст:

#!perl -w
package Starters::MongoDB;
BEGIN { unshift @INC, "../lib"; }

use StartManager;

StartManager::action 
  $ARGV[0],
  start => sub {
    ###
    ### START.
    ###
      print "Starting MongoDB\n";
      system("net start mongodb");
      print "  Started!\n";
  },
  stop => sub {
    ###
    ### STOP.
    ###
      print "Stopping MongoDB\n";
      system("net stop mongodb");
      print "  Stopped!\n";
  };

return 1 if caller;

Далее идем в папку [Денвер]/denwer/scripts/main/start. Порядок следования файлов - это порядок запуска служб. Поэтому выбираем любой порядковый номер и создаем файл <номер>_mongo (к примеру, 25_mongo) и вносим в него следующий текст:

init.d/mongo

Теперь копируем этот файл в папки [Денвер]/denwer/scripts/main/stop и [Денвер]/denwer/scripts/main/restart.

Проверяем запуск, рестарт и остановку Денвера.

Установка клиента MongoDB

В качестве клиента я использую rockmongo - удобная и чем-то похожая, на всем известную phpMyAdmin, оболочка. Дистрибутив, а также документацию (в том числе и на русском) можно найти на сайте разработчика rockmongo.com.

Скаченный дистрибутив распаковываем в [Денвер]/home/localhost/www/Tools/rockmongo. Так как при установке мы не меняли настройки портов (да и вообще не чего не меняли), то клиент уже готов к использованию. Доступен он по адресу: localhost/tools/rockmongo.

Скорее всего возникнет проблема с кодировкой: rockmongo использует utf-8, а Денвер настроен по-умолчанию выдавать закголовки с кодировкой windows-1251. Если открыв rockmongo, вы увидели кракозяблы, то добавьте в папку localhost/tools/rockmongo файл .htaccess со следующим содержанием:

AddDefaultCharset UTF-8

Многие используют главную страницу на localhost для вызова нужного инструмента (таблица ссылок в разделе «Тестирование Денвера»). Давайте для удобства добавим туда ссылку на клиент rockmongo.

Заходим в [Денвер]/home/localhost/www/Tests и создаем папку rockmongo, в которой создаем файл index.html ([Денвер]/home/localhost/www/Tests/index.html) со следующим содержанием:

<html>
  <head>
    <title>Проверка MongoDB и rockMongo</title>
    <meta http-equiv=Refresh content="0; url=http://localhost/Tools/rockmongo">
    #<!--order=101-->
  </head>
</html>

В таблице ссылок на localhost, сразу после phpMyAdmin, должна появится ссылка на rockmongo. Готово.

Благодарности

Хочу выразить благодарность своему читателю, который обратился ко мне со свой проблемой и тем самым помог мне дополнить данную статью.

Denis Yurn спасибо.