Hey Leute, ich versuche seit ein paar Tagen, Multisite zum Laufen zu bringen, aber bisher ohne Erfolg.
Als Selbstständiger ist es gerade ziemlich schwierig, daher versuche ich, alles auf einer einzigen VM zu konsolidieren.
Ich habe mit einer einzelnen Container-Site begonnen, die schon eine Weile läuft.
Anschließend habe ich sie hinter Nginx gestellt, damit ich auf demselben Host einige WordPress-Sites hosten kann. SSL ist hier bereits eingerichtet.
Das alte Discourse-Forum funktioniert einwandfrei, aber ich möchte nun ein neues Forum mit Multisite hinzufügen.
Ich habe diese Anweisungen befolgt: Multisite configuration with Docker
Und den before_bundle_exec:-Hook mit dem neuen Forumshostnamen aktualisiert.
Meine Fragen sind:
- Geht es im
before_bundle_exec:-Hook nur um den zweiten Hostnamen? - Geht im
env: DISCOURSE_HOSTNAME:-Variablen nur der erste Hostname rein? - Gelten die SMTP-Einstellungen im
env:-Abschnitt für alle Sites?
Hier ist, was ich aktuell in der app.yml habe. Jede Hilfe wäre sehr willkommen.
## Dies ist die All-in-One, eigenständige Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSST ihr neu aufbauen
## /var/discourse/launcher rebuild app
##
## SEID *SEHR* VORSICHTIG BEIM BEARBEITEN!
## YAML-DATEIEN SIND SUPER SUPER EMPFINDLICH GEGENÜBER FEHLERN IN LEERZEICHEN ODER AUSRICHTUNG!
## Besucht 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"
## Deaktiviert diese beiden Zeilen, wenn ihr Lets Encrypt (https) hinzufügen möchtet
#- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
- "templates/web.socketed.template.yml"
## Welche TCP/IP-Ports soll dieser Container exponieren?
## Wenn ihr wollt, dass Discourse einen Port mit einem anderen Webserver wie Apache oder Nginx teilt,
## 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"
## Setze db_shared_buffers auf maximal 25 % des gesamten Speichers.
## Wird automatisch vom Bootstrap basierend auf dem erkannten RAM gesetzt, oder ihr könnt es überschreiben
db_shared_buffers: "1024MB"
## Kann die Sortierleistung verbessern, erhöht aber den Speicherverbrauch 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 von Speicher und CPU-Kernen ab.
## Wird automatisch vom Bootstrap basierend auf den erkannten CPUs gesetzt, oder ihr könnt es überschreiben
UNICORN_WORKERS: 4
## TODO: Der Domainname, auf den diese Discourse-Instanz antwortet
## Erforderlich. Discourse funktioniert nicht mit einer bloßen IP-Nummer.
DISCOURSE_HOSTNAME: forum.braidholmplaygroup.co.uk
## Deaktiviert, wenn ihr wollt, dass der Container mit demselben
## Hostnamen (-h-Option) wie oben angegeben gestartet wird (Standard "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Liste der durch Komma getrennten E-Mails, die bei der ersten Anmeldung zu Admin und Entwickler werden
## Beispiel: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'foo@braidholmplaygroup.co.uk'
## 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.sendgrid.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: apikey
DISCOURSE_SMTP_PASSWORD:bar
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, Standard: true)
## Wenn ihr die Lets Encrypt-Vorlage hinzugefügt habt, deaktiviert unten, um ein kostenloses SSL-Zertifikat zu erhalten
LETSENCRYPT_ACCOUNT_EMAIL: foo@braidholmplaygroup.co.uk
## 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_postgres:
- exec: sudo -u postgres createdb b_discourse || exit 0
- exec:
stdin: |
grant all privileges on database b_discourse to discourse;
cmd: sudo -u postgres psql b_discourse
raise_on_fail: false
- exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "alter schema public owner to discourse;"'
- exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "create extension if not exists hstore;"'
- exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "create extension if not exists pg_trgm;"'
after_code:
- exec:
cd: $home/plugins
cmd:
- mkdir -p plugins
- git clone https://github.com/discourse/docker_manager.git
before_bundle_exec:
- file:
path: $home/config/multisite.yml
contents: |
secondsite:
adapter: postgresql
database: b_discourse
pool: 25
timeout: 5000
db_id: 2
host_names:
#- forum.braidholmplaygroup.co.uk
- forum.tssss.org
after_bundle_exec:
- exec: cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate
## Beliebige benutzerdefinierte Befehle, die nach dem Build ausgeführt werden sollen
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Wenn ihr die 'From'-E-Mail-Adresse für eure erste Registrierung festlegen möchtet, deaktiviert und ändert:
## Nach Erhalt der ersten Anmelde-E-Mail den Kommentar wieder aktivieren. Muss nur einmal ausgeführt werden.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Ende der benutzerdefinierten Befehle"