====== Денвер и MongoDB ======
[[wp>MongoDB|MongoDB]] — документо-ориентированная СУБД с открытым исходным кодом, не требующая описания схемы таблиц.
Как и любой системы, у MongoDB есть свои прелести и недостатки. Установить сервер MongoBD на unix-подобные системы не составляет ни какого труда, но давайте посмотрим как это можно сделать под Windows.
Вся установка пройдет в четыре этапа:
- Установка расширения для PHP.
- Установка сервера MongoDB.
- Проверка работы сервера.
- Привязка запуска и остановки сервера MongoDB к запуску и остановке Денвера.
- Установка клиента MongoDB.
Внимание! Работать мы будем с папкой в которую вы установили Денвер, а не с виртуальным диском, который создает Денвер. Это критично для установки служб Windows. Для краткости обозначим путь к этой папке как [Денвер].
===== Установка расширения для PHP =====
Первое, что нужно сделать, это найти и скачать расширение для PHP. Для этого рекомендую посетить страничку посвященную установке расширения на сайте [[http://php.net/manual/en/mongo.installation.php|php.net]] и прочесть раздел установка под Windows (тут есть ссылка на список различных версий расширения).
Хочу заметить что в каждом архиве есть сборки для различных версий PHP и VC Библиотек (для WinXP берите файлы с vc6, для Win7 можно и более старшие, vc9 к примеру). Так, что выбирайте именно то, что вам нужно.
Если вам не критична версия библиотек, то можете скачать их тут: [[http://oleg.zorin.ru/files/denwer/php_mongo-1.1.4.zip|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 можно найти на официальном сайте [[http://www.mongodb.org/|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:
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, оболочка. Дистрибутив, а также документацию (в том числе и на русском) можно найти на сайте разработчика [[http://rockmongo.com/|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) со следующим содержанием:
Проверка MongoDB и rockMongo
#
В таблице ссылок на localhost, сразу после phpMyAdmin, должна появится ссылка на rockmongo. Готово.
===== Благодарности =====
Хочу выразить благодарность своему читателю, который обратился ко мне со свой проблемой и тем самым помог мне дополнить данную статью.
Denis Yurn спасибо.