Содержание
Денвер и MongoDB
MongoDB — документо-ориентированная СУБД с открытым исходным кодом, не требующая описания схемы таблиц.
Как и любой системы, у MongoDB есть свои прелести и недостатки. Установить сервер MongoBD на unix-подобные системы не составляет ни какого труда, но давайте посмотрим как это можно сделать под Windows.
Вся установка пройдет в четыре этапа:
- Установка расширения для PHP.
- Установка сервера MongoDB.
- Проверка работы сервера.
- Привязка запуска и остановки сервера MongoDB к запуску и остановке Денвера.
- Установка клиента 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 спасибо.