Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

MongoDB einrichten

Wie Sie MongoDB für eine Exponential-Website vorbereiten - die Anforderungen, ein Benutzer in der eigenen Datenbank der Website mit readWrite und dbAdmin, warum ein Benutzer auch ohne Zugriffskontrolle nötig ist, der…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/database-administrators/mongodb-setup.md

On this page

This page is a translation. Read the English original

MongoDB einrichten

Diese Seite richtet sich an Datenbankadministratoren, die MongoDB für eine Exponential-Website vorbereiten. MongoDB wird über einen Adapter unterstützt, expMongoDB (lib/ezdb/classes/expmongodb.php), der die SQL-förmigen Aufrufe des Kernels in MongoDB-Operationen übersetzt; er kam mit 6.0.14. Diese Seite beantwortet: was der Adapter braucht, wie Sie den Benutzer anlegen, wie die Einstellungen aussehen, wie Sie installieren und welche Indizes Sie anlegen. Lesen Sie MongoDB: Grenzen und Betrieb, bevor Sie MongoDB für die Produktion wählen. Quelle: 9.5 MongoDB.

Inhalt

  1. Anforderungen
  2. Den Benutzer anlegen
  3. Die Einstellungen
  4. Installieren
  5. Die Indizes anlegen
  6. Den Suchindex aufbauen
  7. Checkliste

Anforderungen

MinimumGetestet
PHP8.28.5
MongoDB-Server6.0 (der Assistent prüft 4.0)8.3
PHP-Erweiterung mongodb1.182.3.3
Composer-Bibliothek mongodb/mongodbvon Ihnen installiert (composer.json schlägt sie nur vor)^1.21 || ^2.0 in der CI

Ohne die Bibliothek lautet der Fehler Class "MongoDB\Client" not found (PHP-Erweiterungen je Engine).

Den Benutzer anlegen

Der Adapter verbindet sich mit der URI mongodb://<user>:<password>@<server>:<port>/<database>. MongoDB verwendet die Datenbank im Pfad der URI als Authentifizierungsdatenbank, wenn kein authSource angegeben ist, legen Sie den Benutzer also in der Datenbank der Website an:

mongosh --eval '
  db.getSiblingDB("exponential").createUser({
    user: "exponential",
    pwd: passwordPrompt(),
    roles: [ { role: "readWrite", db: "exponential" }, { role: "dbAdmin", db: "exponential" } ]
  })'

passwordPrompt() fragt nach dem Passwort, statt es in die Shell-Historie zu schreiben. readWrite deckt die Arbeit der Website ab; dbAdmin lässt den Schema-Handler (expMongoSchema) Collections und Indizes anlegen. Die Datenbank selbst entsteht durch den ersten Schreibzugriff; es gibt kein CREATE DATABASE.

Der Benutzer ist erforderlich, auch auf einem Testserver ohne Zugriffskontrolle: Der Adapter schreibt immer <user>:<password>@ in die URI, und mit leerem User lehnt der Treiber sie ab mit "Failed to parse MongoDB URI: ... 'default' authentication mechanism requires a username".

Die Einstellungen

[DatabaseSettings]
DatabaseImplementation=mongodb
Server=localhost
# empty: 27017
Port=27017
User=exponential
Password=<the password>
Database=exponential

Benutzername und Passwort werden vom Adapter URL-kodiert, Sonderzeichen sind also sicher. Ein Client je Verbindungs-URI wird für die Lebensdauer des Prozesses behalten, ein Velocity-Worker verwendet seine Verbindungen also wieder.

Installieren

Auf MongoDB kann der Konfigurationsschritt des Einrichtungsassistenten ein bis drei Minuten dauern. Erhöhen Sie vorher request_terminate_timeout von PHP-FPM, oder installieren Sie über die Konsole:

EXP_INSTALL_DB_PASSWORD='<the password>' php bin/php/console exp:install --apply --db=mongodb \
    --db-host=127.0.0.1 --db-name=exponential --db-user=exponential --allow-root-user

--db=mongo wird ebenfalls akzeptiert; der Kickstarter nimmt [database_choice] Type=mongodb.

Die Indizes anlegen

Die Abfragen des Kernels verlassen sich auf Indizes, die die Installation nicht anlegt. Ohne sie durchsuchen Teilbaumabfragen und URL-Alias-Suchen ganze Collections:

mongosh "mongodb://exponential@localhost:27017/exponential" --file bin/mongodb/create_indexes.js

mongosh fragt nach dem Passwort. Das Skript enthält 45 Aufrufe von createIndex auf den Collections für Inhalte, Baum, URL-Aliase und andere, mehrere davon eindeutig (zum Beispiel ezcontentobject.id, ezcontentobject.remote_id, ezcontentobject_tree.node_id). Führen Sie es nach einem Upgrade, das Collections hinzufügt, erneut aus; bestehende Indizes lässt MongoDB, wie sie sind.

Den Suchindex aufbauen

Führen Sie die Cronjobs einmal aus, um den eingebauten Suchindex aufzubauen:

php runcronjobs.php --allow-root-user

Planen Sie sie dann ein wie auf jeder anderen Engine (Aufräumen: Cronjobs und Warteschlangentabellen).

Checkliste

  • To do: PHP 8.2+, Erweiterung mongodb 1.18+, Bibliothek mongodb/mongodb in jedem PHP installiert, das die Website verwendet.
  • To do: MongoDB 6.0 oder neuer mit eingeschalteter Zugriffskontrolle.
  • To do: Der Benutzer existiert in der Datenbank der Website, nur mit readWrite und dbAdmin.
  • To do: bin/mongodb/create_indexes.js wurde ausgeführt.
  • To do: Die Cronjobs liefen einmal und sind eingeplant.
  • To do: Sicherungen mit mongodump sind eingeplant (Sicherungen je Engine).

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x