Zum Inhalt

MongoDB mit PHP-Treiber auf Ubuntu installieren

NoSQL Datenbanken wie MongoDB ermöglichen eine sehr schnelle und einfache Speicherung von Daten. Eine feste Tabellenstruktur wie man sie von SQL kennt gibt es hier nicht. Jedoch gerade dadurch hat man als Entwickler deutlich mehr Spielraum. Ein Blick auf MongoDB mit PHP als Scriptsprache lohnt sich allemal.

Hier will ich kurz zeigen wie man MongoDB auf einen Ubuntu-Server installieren kann. Die folgenden Schritte wurden auf einem Ubuntu 12.04 getestet. Bei der folgenden Beschreibung wird von einem Root-Account ausgegangen. Als Super-User muss im Terminal noch “sudo” voran gesetzt werden.

MongoDB Installation über den Ubuntu Paketmanager

Die Installation über den Paket-Manager ist an sich recht simpel durchzuführen.

Mit folgenden Befehl holt man erstmal den öffentlichen Schlüssel von MongoDB:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Im 10gen Package ist die aktuellste MongoDB Version enthalten. Also fügen wir das 10gen Package zur sources.list hinzu:

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list

Jetzt alles auf den neusten Stand bringen:

apt-get update

Danach kann MongoDB installiert werden:

apt-get install mongodb-10gen

Nun ist MongoDB auch schon installiert.

Es wäre auch möglich mehrere Versionen auf dem gleichen Server zu istallieren. Dazu einfach folgendermassen Versionen nachinstallieren:

apt-get install mongodb-10gen=2.2.3

Um zu verhindern dass bei einem Update die Version erneuert wird kann diese festgehalten werden. Dazu folgendes ausführen:

echo "mongodb-10gen hold" | dpkg --set-selections

MongoDB starten

Bevor wir MongoDB starten, noch kurz ein Blick auf die Konfiguration:

nano /etc/mongodb.conf

Nun start, stop und restart geht wie gewohnt:

service mongodb start
service mongodb stop
service mongodb restart

um zu schauen ob der Dienst läfut einfach “mongo” eingeben. Das Logfile findet man unter /var/log/mongodb/mongodb.log

Da nun MongoDB läuft müssen wir noch einen Benutzer anlegen. Als erstes einen globalen Admin:

mongo
db = db.getSiblingDB('admin')
db.addUser( { user: "admin",
              pwd: "password",
              roles: [ "userAdminAnyDatabase" ] } )

und dann noch einen Admin für unsere erste Datenbank.

mongo
use usysto
db.addUser( { user: "usystoadmin",
              pwd: "password",
              roles: [ "readWrite", "dbAdmin"] } )

Somit haben wir dem User “usystoadmin” Alle Rechte für die Kollektion “usysto” gegeben. Weitere Infos im Manual.

Erklärung:

Oben verweisen wir als erstes auf die Datenbank “usyso” mit “use usysto”. Danach legen wir den Benutzer “usystoadmin” mit dem Passwort “password” an und geben ihm die Rechte “readWrite” und “dbAdmin”. Da MongoDB default offen ist, ohne Passwortschutz muss noch der Gastaccount gelöscht werden. Dazu empfehle ich RockMongo zu installieren. Die Installation ist ganz einfach – Ordner per FTP auf den Server laden und die Installation starten. Mit RockMongo können wir jetzt ähnlich wie mit Adminer oder phpMyAdmin die Datenbank verwalten. Es gibt eine ganze Reihe solcher Tools, allerdings ist RockMongo das einzige das für mich ordentlich funktioniert. Damit können wir jetzt in MongoDB in der Kollektion “admin” unter “system.users” den Gast bequem löschen.

Wichtig:

Um MongoDB sicher betreiben zu können müssen wir jetzt noch die Config anpassen

nano /etc/mongodb.conf

Diesen Abschnitt ändern:

# Turn on/off security.  Off is currently the default
#noauth = true
auth = true #wichtig

Anhang:

Sollte ein Fehler auftreten in der Form ” Fri Dec 6 15:00:47 uncaught exception: password can’t be empty ” so gibt es wahrscheindlich ein Problem mit den Versionen von Client und Server.

Client Version finden:

mongo --version

Server Version finden:

mongo
> db.serverStatus().version

Dann entsprechendes updaten und User erneut anlegen.

deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
apt-get update and sudo apt-get install mongodb-10gen

MongoDB PHP-Treiber installieren

Jetzt fehlt nur noch der Treiber für PHP um dann mit Leichtigkeit auf MongoDB zugreifen zu können.

Dazu muss PEAR installiert sein – Anhang

pecl install mongo

Dann noch die php.ini anpassen. Um die richtige Datei zu finden am besten per phpinfo() ausfindig machen.

nano /etc/php.ini

Folgendes am Ende einfügen:

extension=mongo.so

Das Memory_Limit sollte auch noch kontrolliert werden. Mindestens 32mb.

Nun noch MongoDB und den Apachen neu strarten:

service apache2 restart
service mongo restart

und schon sollte alles laufen. Mehr zum Umgang mit PHP dann im nächsten Beitrag.

Veröffentlicht inLösungen

Neueste Beiträge

Themen: