Wiederherstellung auf eine Site von einer Multisite

Hallo, ich habe mich an Multisite configuration with Docker gehalten, um eine Multisite-Konfiguration einzurichten. Jetzt möchte ich wieder zu einer einzelnen Site zurückkehren. Was muss ich tun, abgesehen davon, die Datei app.yml wiederherzustellen?

Ich verstehe wirklich nicht, was Sie hier erreichen wollen, aber wenn Sie eine Site aus dem Multisite-Setup herauslösen möchten, können Sie dies tun, indem Sie ein Backup aus dem Multisite-System herunterladen und es auf der eigenständigen Site wiederherstellen. Je nach Einrichtung der eigenständigen Site müssen Sie möglicherweise einige Zuordnungen anpassen.

Ich möchte nur die erste Site behalten und die zweite Site löschen.

Ja, der einfachste Ansatz besteht darin, ein Backup der ersten Site zu erstellen, die beiden Container (web_only & data), die Sie beim Einrichten der Multisite-Funktion verwendet haben, herunterzufahren, eine neue Site über ./discourse-setup einzurichten und anschließend Ihr Backup wiederherzustellen. Eine fortgeschrittenere Lösung könnte das Entfernen der Konfiguration der zweiten Site aus den YAML-Dateien, das Öffnen des Daten-Containers zum Löschen der zweiten Datenbank sowie das Entfernen der Assets der zweiten Site aus dem gemeinsamen Ordner umfassen.

Danke! Ich werde die erste Methode ausprobieren.

Hallo, ich habe Ihre zweite Methode befolgt. Ich habe die Datenbank der zweiten Site entfernt und die app.yml-Konfigurationsdatei wiederhergestellt. Ich weiß jedoch nicht, wie ich die Assets der zweiten Site aus dem freigegebenen Ordner entfernen kann. Könnten Sie mir dabei helfen?

Beim Upgrade von Discourse erhalte ich auf der Plugin-Seite eine leere Seite und folgenden Fehler in der Konsole:

Uncaught TypeError: Cannot read property 'extend' of undefined
    at _discourse-rss-poster-422da9e50d576ad45cb7287315e7a35550af3708eb68422bee05813edc01521d.js:188
    at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74640)
    at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74470)
    at require (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74637)
    at t.customResolve (_application-572c27eef10b724b244ce26553c6fe92b75f44172387b25ef144f338da4faa1e.js:1015)
    at t.resolveRoute (_application-572c27eef10b724b244ce26553c6fe92b75f44172387b25ef144f338da4faa1e.js:1051)
    at t.e [as resolveRoute] (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:43433)
    at t.n.resolve (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:46378)
    at _ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:12420
    at e.t.resolve (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:11959)

Ich vermute, dass dies auf die zweite Site zurückzuführen ist, aber ich weiß nicht, wie ich das Problem beheben kann. Vielen Dank!

Könntest du mir bitte helfen? @sam

Du musst deine app.yml-Datei teilen, wobei du die Passwörter schwärzen musst. Ich würde das auf eine Unterlassung oder einen Fehler in deiner app.yml-Datei zurückführen, der dies verursacht.

## Dies ist die All-in-One, eigenständige Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSSEN Sie neu erstellen
## /var/discourse/launcher rebuild app
##
## SEIEN SIE *SEHR* VORSICHTIG BEI DER BEARBEITUNG!
## YAML-DATEIEN SIND EXTREM EMPFINDLICH GEGENÜBER FEHLERN IN LEERZEICHEN ODER AUSRICHTUNG!
## Besuchen Sie http://www.yamllint.com/, um diese Datei bei Bedarf zu validieren

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Kommentieren Sie diese beiden Zeilen aus, wenn Sie Lets Encrypt (https) hinzufügen möchten
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"

## Welche TCP/IP-Ports soll dieser Container freigeben?
## Wenn Sie Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilen möchten,
## siehe https://meta.discourse.org/t/17247 für Details
expose:
        #  - "80:80"   # http
        #  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Setzen Sie db_shared_buffers auf maximal 25 % des gesamten Speichers.
  ## wird automatisch vom Bootstrap basierend auf dem erkannten RAM gesetzt, oder Sie können es überschreiben
  db_shared_buffers: "128MB"

  ## Kann die Sortierleistung verbessern, erhöht jedoch die Speichernutzung pro Verbindung
  #db_work_mem: "40MB"

  ## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt vom Speicher und den CPU-Kernen ab.
  ## wird automatisch vom Bootstrap basierend auf den erkannten CPUs gesetzt, oder Sie können es überschreiben
  UNICORN_WORKERS: 2

  ## TODO: Der Domänenname, auf den diese Discourse-Instanz antwortet
  ## Erforderlich. Discourse funktioniert nicht mit einer reinen IP-Nummer.
  DISCOURSE_HOSTNAME: at4am.io

  ## Kommentieren Sie dies aus, wenn Sie möchten, dass der Container mit dem gleichen
  ## Hostnamen (-h-Option) wie oben angegeben gestartet wird (Standard "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Liste der durch Komma getrennten E-Mail-Adressen, die bei der ersten Anmeldung als Admin und Entwickler festgelegt werden
  ## Beispiel 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'a@gmail.com'

  ## TODO: Der SMTP-Mailserver, der zur Validierung neuer Konten und zum Senden von Benachrichtigungen verwendet wird
  # SMTP-Adresse, Benutzername und Passwort sind erforderlich
  # WARNUNG: Das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: a@outlook.com
  DISCOURSE_SMTP_PASSWORD: "a"
  DISCOURSE_SMTP_AUTHENTICATION: login
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, Standard true)

  ## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, kommentieren Sie unten aus, um ein kostenloses SSL-Zertifikat zu erhalten
  LETSENCRYPT_ACCOUNT_EMAIL: a@gmail.com

  ## Die CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
  ## siehe https://meta.discourse.org/t/14857 für Details
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins gehen hier
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/livc/discourse-rss-poster
            #- git clone https://github.com/paviliondev/discourse-ratings
          - git clone https://github.com/discourse/discourse-data-explorer
          - git clone https://github.com/discourse/discourse-solved

## Beliebige benutzerdefinierte Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
  - exec: echo "Beginn der benutzerdefinierten Befehle"
  ## Wenn Sie die 'Von'-E-Mail-Adresse für Ihre erste Registrierung festlegen möchten, kommentieren Sie dies aus und ändern Sie:
  ## Nach Erhalt der ersten Anmelde-E-Mail diesen Kommentar entfernen. Es muss nur einmal ausgeführt werden.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Ende der benutzerdefinierten Befehle"

Das ist meine app.yml, danke für Ihre Hilfe.

Nachdem ich deinen vorherigen Fehler und die app.yml angesehen habe, liegt es höchstwahrscheinlich an dem von dir verwendeten Fork des RSS-Plugins. Möglicherweise ist dort etwas defekt, was das Problem verursacht. Könntest du versuchen, nach dem Deaktivieren des Plugins neu zu bauen?

@itsbhanusharma

Wenn ich dieses Plugin auskommentiere, funktioniert die Plugin-Seite. Aber bevor ich Discourse auf die neueste Version aktualisiert habe, funktionierte das Plugin problemlos.

Ich bin mir also nicht sicher, ob es an der Discourse-Aktualisierung oder am Multisite-Betrieb liegt.

Besonders auffällig ist, dass unter
https://meta.discourse.org/t/discourse-subscriptions/140818/77?u=livc
derselbe Fehler im Multisite-Betrieb auftritt.

Dieses Plugin ist für meine Website sehr wichtig, und ich habe jetzt keine Ahnung. :pensive:

Wenn du dieses Plugin erstellt hast, versuche es zu reparieren. Wenn es jemand für dich gebaut hat, versuche, Kontakt mit ihm aufzunehmen, damit es repariert wird.