Is it possible, after tuning Discourse on local computer, to export all settings into file and upload them into production?
Thanks.
Is it possible, after tuning Discourse on local computer, to export all settings into file and upload them into production?
Thanks.
I guess probably you can export your settings from DB.
discourse=>\dt
...
...
public | single_sign_on_records | table | discourse
public | site_customizations | table | discourse
public | site_settings | table | discourse
public | stylesheet_cache | table | discourse
...
...
Notice site_settings table. You can also take this data from your backup. It already have a dump of your database inside it.
Then all you need to do is restore this table to your server from your local dump. ![]()
Courtesy of @blake we now have rake tasks to export/import site settings:
rake site_settings:export > settings.yml
rake site_settings:import < settings.yml
For those who do not have access to rake tasks, I also have contributed a settings uploader that uses the API: GitHub - pfaffman/discourse-settings-uploader: Install a Discourse settings JSON file to a site
Hello,
I’ve used discourse-settings-uploader to upload site_settings.json file from the GitHub Jay mentioned. I get this error when I run it:
./discourse-settings-uploader:39:in `<main>': undefined method `each' for nil:NilClass (NoMethodError)
line39: settings['site_settings'].each do |setting|
line40: jsetting (setting) unless setting['value'] == setting['default']
line41: end
I used an API key for “All Users” and used “system” when I ran discourse-settings-uploader.
Any thoughts?
Für zukünftige Referenz einige Probleme, die ich bei der Verwendung von discourse-settings-uploader hatte, wobei 301-Fehler auftraten:
./discourse-settings-uploader community.mysite.com 22f7d44321ae2365d3e3a5e9224524ba0e7302bd75ed06bfbh31ed5090ec6d3b system site-settings.json
SiteSettingtitle="Mysite"
E! 301 Moved Permanently
Ich erhalte diesen Fehler einmal pro Einstellung. Aber ich kann die Seite an diesen URLs erfolgreich durchsuchen. Also habe ich herausgefunden – es läuft über http, und das ist deaktiviert.
Also füge ich nun https zu meinem Situsnamen hinzu und erhalte einen anderen Fehler:
SiteSettingtitle="My sIte"
E! SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
something's wrong with https://community.mysite.com/admin/site_settings/title {"title"=>"Mysite", :api_key=>"22f7d44321ae2365d3e3a5e9224524ba0e7302bd75ed06bfbh31ed5090ec6d3b ec6d3b", :api_username=>"system"}
Das läuft also auf eine mangelhafte lokale Konfiguration der Root-Zertifikate hinaus, scheint es. Ich könnte losziehen und einen Nachmittag damit verschwenden, aber stattdessen habe ich verify_ssl deaktiviert. Es ist sehr unsicher und schreckliche Dinge werden dir und deinen Kindern und den Kindern deiner Kinder widerfahren – aber in diesem Fall war es mir einfach egal.
Also habe ich im Uploader-Skript diese Methode hinzugefügt:
def put_no_ssl(url, payload, headers={}, &block)
RestClient::Request.execute(method: :put, url: url, :payload => payload, headers: headers, verify_ssl: false, &block)
end
Und unten habe ich den Aufruf von
r = RestClient.put(url, my_hash)
in
r = put_no_ssl(url, my_hash)
geändert.
Und es hat funktioniert! ![]()
![]()
Hallo Community,
ich muss die Seiteneinstellungen von der Produktionsumgebung in die Staging-Umgebung exportieren. Ich habe diese Anleitung „Discourse-Settings Uploader
Schau dir Backup only Site Settings - #5 by pfaffman an. Du musst das Skript von GitHub herunterladen und Ruby installiert haben.
rake site_settings:import < settings.yml
Nur zur Info, hier ist die Docker-Version dieses Befehls:
d/rake "site_settings:import < settings.yml"
Falls folgende Meldung erscheint:
Das Eingabegerät ist kein TTY
Hey @pfaffman
Ich habe es genau so versucht, wie angegeben… ./discourse-settings-uploader https://discourse.example.com d35989078a system site_settings.json
Aber mein Skript schlägt fehl, und ich bin mir nicht sicher, warum und wie.
Es meldet für jede Einstellung E! 404 Not Found.
Ich habe deinen Screenshot entfernt, da er deinen API-Schlüssel enthält. Du kannst gerne einen anderen Screenshot hinzufügen, der keine sensiblen Daten enthält oder diese verschleiert. Da der Schlüssel öffentlich war, solltest du ihn außerdem rotieren, da er als kompromittiert gilt.
Vielen Dank für die sofortige Rückmeldung. Ich werde solche Vorgehensweisen ab sofort beachten.
Wenn Sie eine 404 erhalten, ist Ihr API-Schlüssel falsch oder nicht dort, wo das Skript ihn finden kann.
Ich habe das geprüft. Alle meine APIs funktionieren mit demselben Schlüssel. Und ich bin mir sicher, dass das Skript den richtigen Ort sucht, da die Log-Ausgaben URLs wie
{url}/admin/site_settings/title
{url}/admin/site_settings/site_description
enthalten.
Ich habe site_settings.json von einer Seite heruntergeladen und versuche nun, die Einstellungen auf eine bestehende Seite2 zu übertragen. Sollte ich die heruntergeladene site_settings.json bearbeiten?
Seltsam. Entschuldigung, aber das ist meine beste kostenlose Antwort. Du kannst mir eine Nachricht senden, wenn du ein Budget hast.
Es gibt einen Rake-Auftrag, den du ausprobieren kannst, wenn du auf beiden Seiten selbst gehostet bist.
Ich benutze dieses Skript heutzutage selbst nicht mehr. Es könnte sein, dass sich etwas in Discourse geändert hat, aber ich bezweifle es. Wenn du sicher bist, dass du den API-Schlüssel für die Seite verwendest, auf die du schreiben möchtest, dann habe ich keine Vermutung.
Ich habe versucht, rake site_settings:export > settings.yml auszuführen. Mir ist aufgefallen, dass die Tags und Tag-Gruppen, die ich auf meinem Discourse-Server konfiguriert habe, nicht exportiert wurden. Warum ist das so?
Tags sind Tags, keine Seiteneinstellungen. Mir ist kein Weg bekannt, Tags zu migrieren.
Gibt es eine Möglichkeit, die Einstellungen auch für Plugins Theme-Komponenten zu exportieren?