Es gibt mehrere Tricks, die bei der Einrichtung eines Staging-Servers hilfreich sein können.
Was ist ein Staging-Server?
Ein Staging-Server ist im Wesentlichen eine Kopie einer Produktionsseite. Er befindet sich ebenfalls auf einem Server und funktioniert identisch. Er läuft in einem Docker-Container, genau wie eine normale Discourse-Site.
Er dient dazu, Ihnen einen Ort zu bieten, an dem Sie riskante Dinge ausprobieren können, oder Dinge testen können, die Sie nicht einfach vor Ihren Benutzern verbergen können. Er ist sehr nützlich für das Testen von Anzeigen mit dem https://meta.discourse.org/t/official-advertising-ad-plugin-for-discourse/33734 oder wenn Sie etwas Ausgefallenes wie einen Forenimport oder eine Zusammenführung durchführen möchten.
Dies steht im Gegensatz zu einem Entwicklungsserver, der normalerweise an einem leicht zugänglichen (und isolierten) Ort läuft, damit ein Entwickler sicher am Code basteln kann.
Was brauche ich?
-
Alles, was Sie für eine Standard-Self-Hosted-Installation benötigen.
-
Wenn Sie S3-Backups eingerichtet haben, wird Ihr Leben erheblich einfacher.
- Andernfalls benötigen Sie eine Möglichkeit, große Dateien über SSH in und aus einem Server zu verschieben.
Schritte
Richten Sie Ihren Server nach Wunsch ein
Typischerweise auf einem virtuellen Ubuntu-Server, der auf Digital Ocean gehostet wird, aber Sie können verwenden, womit Sie sich am wohlsten fühlen.
Discourse installieren
Über diese Anleitung (oder vielleicht über dashboard.literatecomputing.com). Ich empfehle die Verwendung von “Junk”-E-Mail-Anmeldeinformationen (Sie brauchen und wollen nicht, dass E-Mails funktionieren).
discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
Bestätigen Sie, dass Ihre Installation funktioniert:
Richten Sie ein Admin-Konto ein (falls erforderlich)
Richten Sie sich ein Admin-Konto über die Kommandozeile ein. Dies überspringt die Notwendigkeit der Authentifizierung per E-Mail.
./launcher enter app
rake admin:create
Dies ist nicht unbedingt erforderlich, außer zum Testen der Installation, da Sie die Wiederherstellung aus einem Backup über die Kommandozeile durchführen können.
Bearbeiten Sie app.yml und nehmen Sie einige Anpassungen vor
-
Möglicherweise möchten Sie eine Kopie der ursprünglichen app.yml erstellen (ich nenne meine
app.vanilla.yml), zu der Sie zurückkehren können, wenn Sie etwas vermasseln. -
Fügen Sie am Ende des Abschnitts
envdiese Zeilen hinzu:## Staging-server-spezifische Einstellungen DISCOURSE_AUTOMATIC_BACKUPS_ENABLED: false DISCOURSE_LOGIN_REQUIRED: true DISCOURSE_DISABLE_EMAILS: 'yes' DISCOURSE_S3_DISABLE_CLEANUP: true DISCOURSE_ALLOW_RESTORE: true -
Wenn Sie S3 (oder ähnliche) Backups konfiguriert haben, fügen Sie auch diese hinzu (mit Ihren Einstellungen von der Hauptseite).
## S3-Konfiguration DISCOURSE_S3_ACCESS_KEY_ID: 'your_key' DISCOURSE_S3_SECRET_ACCESS_KEY: 'your_secret' DISCOURSE_BACKUP_LOCATION: 's3' DISCOURSE_S3_BACKUP_BUCKET: 'your_backups_location' DISCOURSE_S3_REGION: 'your_s3_region' DISCOURSE_S3_DISABLE_CLEANUP: trueund wenn Sie auch S3-Uploads durchführen:
DISCOURSE_ENABLE_S3_UPLOADS: true DISCOURSE_S3_UPLOAD_BUCKET: 'your_uploads_location' -
Möglicherweise möchten Sie die gleichen Plugins hinzufügen, die Sie auch auf Ihrer Produktionsseite haben.
-
Führen Sie einen Rebuild durch
./launcher rebuild app
Verwaltung des Staging-Servers
Sie haben jetzt einen Staging-Server, der mit Ihren S3-Backups verbunden ist (aber diese nicht überschreibt), einfach wiederhergestellt werden kann und unter keinen Umständen E-Mails an niemanden senden kann. Perfekt!
Sie können ein frisches Backup auf dem Staging-Server wiederherstellen und loslegen. Wenn Ihnen nicht gefällt, was Sie haben, stellen Sie es einfach wieder her.
Ausschalten oder Einschalten
Wenn Sie Ihren Staging-Server längere Zeit “eingeschaltet” lassen, riskieren Sie, dass er von Google indiziert wird und Ihre Benutzer sich versehentlich dort anmelden. Da ihre Anmeldedaten eine Kopie Ihrer Produktionsseite sind, ist dies sehr gut möglich.
Eine einfache Möglichkeit, diese beiden Dinge zu mildern, ist das einfache Ausschalten von Discourse:
./launcher stop app
Und um ihn wieder einzuschalten, damit Sie ihn nutzen können:
./launcher restart app
Updates
Sie müssen sicherstellen, dass Sie sowohl den Staging-Server als auch Ihre Produktionsseite gleichzeitig aktualisieren/rebuilden, wenn Sie sicherstellen möchten, dass die Dinge aus Plugin- und Code-Sicht aufeinander abgestimmt bleiben. Das Gleiche gilt für Änderungen an app.yml.
Wenn Sie kein S3 verwenden, müssen Sie Backups manuell zwischen den Servern verschieben. Und sie sind groß!
Befüllen eines Testservers
Wenn Sie einen Staging-Server wünschen, sollten Sie ihn mit Ihren tatsächlichen Daten von Ihrem tatsächlichen Forum über eine Restore befüllen. Manchmal sind es Ihre spezifischen Daten, die das Problem verursachen, und das Testen Ihres Forums mit anderen Daten kann Ihnen ein falsches Gefühl der Sicherheit geben.
Wenn Sie jedoch einen Testserver wünschen, um zu sehen, wie Discourse ist, sollten Sie die Dinge mit einigen gefälschten Daten überprüfen, und wenn Sie das tun, können Sie Folgendes tun:
./launcher enter app
ALLOW_DEV_POPULATE=1 bundle install
ALLOW_DEV_POPULATE=1 rake dev:populate
Dies wird Ihr Forum mit einigen gefälschten Daten befüllen, damit Sie sehen können, wie die Dinge mit den von Ihnen gewünschten Themes und Plugins aussehen. Wenn Sie Ihr Forum noch nicht gestartet haben, erhalten Sie hier einen Eindruck davon, wie die Dinge wahrscheinlich aussehen werden.
Verwaltung der Zwei-Faktor-Authentifizierung
Während Ihr Konto-Benutzername / Passwort von Ihrer Hauptseite auch auf der Staging-Seite funktionieren sollte, ist dies bei 2FA nicht so schön. Wenn Sie ein Problem haben, schalten Sie 2FA aus:
./launcher enter app
rake users:disable_2fa[<USERNAME>]


