es klingt so, als wäre dies eine FAQ, und ich entschuldige mich im Voraus, falls es eine ist: Offenbar habe ich nicht gründlich genug gesucht Wie könnte ich ein Skript schreiben, das dasselbe tut wie der Assistent, anstatt dies über die Weboberfläche zu tun?
Aber … vielleicht liege ich genau hier falsch: Um die API aufzurufen, benötige ich einen API-Schlüssel. Und damit einen Admin-Benutzer… den ich (noch) nicht habe. Ist es möglich, die API ohne API-Schlüssel aufzurufen? Oder einen API-Schlüssel zu erhalten, der nicht an einen Benutzer gebunden ist und über Admin-Berechtigungen verfügt?
Es sieht so aus, als müsste ich rake:admin verwenden, um den Admin-Benutzer zu erstellen. Eigentlich denke ich, dass der Admin-Benutzer bereits erstellt, aber noch nicht genehmigt ist, sodass ich ihn so ändern müsste, dass er genehmigt wird.
Oder vielleicht kann ich einen API-Schlüssel mit api_key:create_master erstellen und damit den Admin-Benutzer anlegen?
Aber es scheint, als würde ich nicht ganz verstehen, wie dieser Master-Schlüssel verwendet werden soll, denn das funktioniert nicht:
# curl -X GET "https://forum2/categories" -H "Accept: application/json" -H "Api-Key: ad676e7413778aa3a5d315c35f91ef0edb4a4d4b2d644b924b7a88421cfa"
{"errors":["You are not permitted to view the requested resource. The API username or key is invalid."],"error_type":"invalid_access"}
Wenn ich jedoch einen Admin-Benutzer erstelle:
root@forum:/var/www/discourse# RAILS_DB=secondsite rake 'admin:create'
Email: loic@dachary.org
Password:
Repeat password:
Ensuring account is active!
Account created successfully with username loic
Do you want to grant Admin privileges to this account? (Y/n) Y
Your account now has Admin privileges!
und dann denselben Master-Schlüssel zusammen mit dem neu erstellten Benutzer verwende, funktioniert es:
Ja, genau. Ich möchte ein neues Forum von Grund auf erstellen und es mit Benutzern, Kategorien und Themen füllen, und zwar über ein Skript, das keine Browserinteraktion erfordert.
Wenn das ein einmaliger Aufruf wäre, wäre das in Ordnung. Aber ich möchte das Import-Skript testen können. Und damit der Test ausgeführt werden kann, muss er zuerst ein Discourse-System von Grund auf neu erstellen, ohne dass eine manuelle Intervention mitten im automatisierten Test erforderlich ist
Unter der Annahme einer Multisite-Installation kann die Erstellung eines genehmigten Admin-Benutzers und eines Admin-API-Schlüssels wie folgt erfolgen:
Ich verdiene einen beträchtlichen Teil meines Lebensunterhalts mit Importen. Ich bin mir ziemlich sicher, dass das, was ich unten beschreibe, so ziemlich der übliche Weg für alle ist, die regelmäßig Importe durchführen.
Ich würde Folgendes empfehlen:
den Importer konfigurieren und ausführen
testen, ob er das tut, was Sie wollen
ein Skript zum erneuten Ausführen des Importers schreiben, um die seit dem ersten Lauf erfassten Daten zu importieren
das testen
den endgültigen Import durchführen, sobald alles oben Genannte funktioniert.
diese Daten auf Ihren Produktionsserver wiederherstellen
Die Migrationsaufgabe und die Einrichtung eines Produktionsservers sind völlig unterschiedlich und haben unterschiedliche Anforderungen. Für die Migrationsaufgabe werden meist Dinge benötigt, die der Produktionsserver nicht braucht (ich denke jedoch, dass der Mailman-Importer eine Ausnahme ist).
Eine Migration auf einem Multisite-Server durchzuführen, scheint besonders unbedacht.
Danke für den Rat, ich werde diesen Prozess befolgen. Es gibt über 100 GB an mbox-Archiven, daher werden mindestens einige Tests erforderlich sein.
Dazu… es sieht so aus, als würde der mbox-Importeur immer eine neue Kategorie erstellen und keine bestehende verwenden können. Weißt du zufällig etwas darüber?
Ich kannte die Bedeutung von foolhardy nicht: Es gefällt mir, und ich werde es wieder verwenden
Das ist umso mehr ein Grund, den Import von vorne zu starten, eine schlechte Idee. Das wird wahrscheinlich Wochen dauern. Wenn du den Importeur erneut ausführst, importiert er nur die neuen Daten (und ich passe ihn oft so an, dass er die alten Daten vollständig überspringt).
Du kannst das Skript wahrscheinlich so anpassen, dass es eine bestehende Kategorie verwendet, indem du ein CategoryCustomField erstellst. Ich empfehle, einfach mit einer leeren Datenbank zu beginnen und das Skript die Kategorie erstellen zu lassen. Anschließend kannst du sie nach Belieben anpassen, und wenn du das Skript erneut ausführst, wird es diese weiter verwenden.
Die eigentliche Gefahr bei deinem Import besteht darin, dass die Daten im Laufe der Jahre wahrscheinlich Unterschiede aufweisen. Daher funktioniert etwas, das für 10 Jahre alte Daten geeignet ist, möglicherweise nicht für 5 Jahre alte Daten und so weiter. Aber vielleicht hast du Glück.
Ich bin mir nicht sicher, ob das ein Kompliment ist
Ich verwende Multisite immer für Importe. Das ermöglicht es mehreren Foren, nebeneinander zu existieren: eines, an dem ich feile, während der Kunde den Import im benachbarten Forum überprüfen kann. Außerdem ist es einfach, eine Datenbank zu kopieren, um von einem bestimmten Punkt neu zu starten.
Na, dann fall ich ja fast um! Du bist so ziemlich der Einzige auf dem Planeten, der nicht für CDCK arbeitet und von dem ich denke, dass er mehr über Imports weiß als ich. Und wenn du Multisite für Imports verwendest, dann werde ich das auch in Betracht ziehen. Normalerweise starte ich separate Container auf demselben Host mit Traefik davor, also ist es gewissermaßen ähnlich, aber eigentlich nicht wirklich.