Jakiś czas temu postanowiłem zaznajomić się z nierelacyjnymi bazami danych. Ze względu na zachwalaną wydajność i skalowalność, na celownik obrałem MongoDB. Instalacja przeprowadzona zostanie na komputerze pracującym pod kontrolą MS Windows 10 (na innych wersjach instalacja będzie przebiegać podobnie), z zainstalowanym już wcześniej XAMPP (podstawowa konfiguracja). Zakładam, że skoro czytasz ten tutorial, to wiesz jak uruchomić okno wiersza poleceń, czy utworzyć nowy folder, dlatego tych czynności nie będę obszernie opisywał, ani ilustrował zrzutami ekranu (pewnie gdzieś zdarzy mi się zamieścić jakiegoś screenshota). Cały proces przebiegać będzie w kilku prostych krokach:
- Instalacja MongoDB dla Windows
- Dodanie rozszerzenia MongoDB dla PHP w XAMPP
- Opcjonalne narzędzia do obsługi MongoDB
1. Instalacja MongoDB dla Windows
Pierwszym krokiem jest instalacja MongoDB dla Windows. W tym celu przechodzimy do strony MongoDB, skąd pobieramy serwer MongoDB w wersji przeznaczonej dla naszego systemu operacyjnego. Ponieważ posiadam zainstalowany Windows 10, architektura systemu jest 64-bitowa, wybieram wersję Windows Server 2008 R2 64-bit and later, with SSL support x64.
Po zakończeniu pobierania, przechodzę do procesu instalacji (wybieram niestandardową instalację, ze względu na to, że MongoDB chcę mieć zainstalowane w folderze C:\mongodb\).
Mamy już zainstalowany serwer MongoDB. Teraz trochę czasu poświęcę na konfigurację środowiska MongoDB. Obok folderu C:\mongodb\bin\ tworzę folder na logi MongoDB (C:\mongodb\log\). Następnie tworzę folder C:\data\db\ na domyślną lokalizację baz danych MongoDB.
Możemy teraz sprawdzić, czy wszystko się powiodło. Zaczniemy od uruchomienia serwera. W tym celu przechodzimy do konsoli wiersza poleceń (CTRL+R i wpisujemy cmd.exe). W oknie poleceń uruchamiamy mongod.exe (serwer MongoDB):
C:\mongodb\bin\mongod.exe
Podczas uruchamiania serwera może pojawić się systemowe okienko z monitem bezpieczeństwa, w takim przypadku należy kliknąć na Allow access. Po chwili zostanie uruchomiony serwer (w tym samym czasie do folderu C:\data\db zostanie zapisanych nieco plików – około 300MB), zobaczymy też stosowne komunikaty w oknie wiersza poleceń:
Łączymy się z serwerem, uruchamiając klienta w osobnym oknie wiersza poleceń (plik mongo.exe):
C:\mongodb\bin\mongo.exe
Jak widać na screenach, wszystko jest ok, można więc wyłączyć okna wiersza poleceń. Musimy jeszcze stworzyć plik konfiguracyjny, w tym celu przechodzimy do folderu C:\mongodb\ i tworzymy nowy plik o nazwie mongod.cfg z następującą zawartością:
systemLog: destination: file path: c:\data\log\mongod.log storage: dbPath: c:\data\db
Jeśli chcemy, aby serwer MongoDB startował każdorazowo wraz systemem Windows, uruchomimy go jako usługę. W tym celu możemy wpisać w oknie wiersza poleceń (uruchomionym z uprawnieniami administratora):
sc.exe create MongoDB binPath= "C:\mongodb\bin\mongod.exe --service --config=\"C:\mongodb\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
Co spowoduje zainstalowanie MongoDB jako usługi z ustawieniami, które zapisaliśmy przed chwilą w pliku konfiguracyjnym.
Aby uruchomić usługę wpisujemy (w tym samy oknie wiersza poleceń):
net start MongoDB
Jeśli kiedyś będziemy chcieli wyłączyć usługę MongoDB, wystarczy wpisać w oknie wiersza poleceń (z uprawnieniami administratora):
net stop MongoDB
A jeśli zechcemy całkowicie odinstalować usługę, wpiszemy (po uprzednim zatrzymaniu usługi, jeśli była uruchomiona):
"C:\mongodb\bin\mongod.exe" --remove
2. Dodanie rozszerzenia MongoDB dla PHP w XAMPP
Ponieważ chcę mieć dostęp do bazy MongoDB z poziomu PHP, należy włączyć stosowne rozszerzenie. Niestety, XAMPP jego nie zawiera, więc wpierw musimy je pobrać. Przed pobraniem należy upewnić się o posiadanej wersji PHP, wersji kompilatora PHP, architekturze serwera PHP, oraz o statusie bezpieczeństwa wątków. Wszystkie te informacje otrzymamy z funkcji phpinfo(). Utwórzmy więc plik PHP z zawartością:
phpinfo();
Jak widać, w moim przypadku, wersja PHP, to 5.6.19, kompilator MSVC11, wersja 32bitowa (Architecture: x86), oraz włączone bezpieczeństwo wątków (Thread Safety: enabled). Uzbrojony w tą wiedzę przechodzę na tą stronę, aby pobrać odpowiednią paczkę.
Jest tu mała niedogodność, ponieważ na liście nie ma widocznych informacji na temat tego, jaką wersję należy pobrać. Pobieram więc paczkę o najwyższym numerze (w dniu pisania tutoriala był to plik php_mongo-1.6.8.zip). Rozpakowuję i sprawdzam zawartość. Szukam pliku dll, który w nazwie zawiera posiadany przeze mnie numer wersji PHP (5.6), kompilator VC11 (MSVC11). Gdybym miał wyłączone bezpieczeństwo wątków, szukałbym dodatkowo oznaczenia nts (skrót od No Thread Safety). W przypadku zainstalowanej wersji 64-bitowej XAMPP’a, wybrać należałoby plik z dodatkowym oznaczeniem x86_64. Tak więc, interesuje mnie widoczny na screenie powyżej plik php_mongo-1.6.8-5.6-vc11.dll. Przenoszę go do folderu C:\XAMPP\php\ext\ i zmieniam jego nazwę na krótszą: php_mongodb.dll:
W pliku php.ini (u mnie: C:\xampp\php\php.ini) należy jeszcze dodać rozszerzenie. W tym celu odnajduję sekcję Dynamic Extensions i dodaję wiersz:
extension=php_mongodb.dll
Aby zmiany dokonane w pliku php.ini były widoczne, restartuję serwer Apache:
Teraz mogę już zacząć pracę z MongoDB.
3. Opcjonalne narzędzia do obsługi MongoDB
Ten krok nie jest wymagany, jednakże postanowiłem go dodać, aby usprawnić pracę z MongoDB. Jeśli często będziemy korzystać z edycji danych w bazie MongoDB, warto posługiwać się wygodnym GUI zamiast korzystać z klienta dostępnego z wiersza poleceń. W tym celu zainstalujmy Robomongo (wersja darmowa w zupełności nam wystarczy).
Przy pierwszym uruchomieniu utwórzmy połączenie do bazy i przetestujmy je:
Następnie wybieramy zapisane połączenie z bazą (bazami) danych. Oczywiście, w tym momencie jeszcze nie mamy utworzonych żadnych kolekcji.
Teraz już można wygodnie i przyjemnie zarządzać bazami MongoDB.