====== Денвер и 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 спасибо.