Diese Anweisungen sollten als Beta und für Personen betrachtet werden, die mit einer Standardeinrichtung vertraut sind
Aber im Moment (2023.02.11) funktionieren diese Anweisungen nicht!! (Siehe Set up Let’s Encrypt with multiple domains / redirects, wie die letsencrypt-Einstellung aktualisiert werden kann, um den fullpath-Teil hinzuzufügen. Ich werde dies in Kürze aktualisieren, um diese Änderungen widerzuspiegeln.)
Ich habe diese Anleitung vor ein paar Wochen entwickelt, benötige aber jemanden, der sie testet und prüft, ob sie für jemand anderen funktioniert. Bitte antworten Sie, wenn Sie es versuchen, und teilen Sie mir mit, ob es funktioniert und ob etwas unklar ist.
Und weiter geht’s. . .
Diese Anleitung dokumentiert grob, wie eine Multisite-Einrichtung mit 2 zusätzlichen Hosts (insgesamt 3) eingerichtet wird.
Es wird davon ausgegangen, dass Sie eine funktionierende Offizielle Standardinstallation von Discourse oder eine 2-Container-Installation (Move from standalone container to separate web and data containers) haben.
Domainname für die primäre Website
Subdomain für die 2. Website
Subdomain für die 3. Website
Datenbankpasswort (dasselbe wie DISCOURSE_DB_PASSWORD) oder discourse in app.yml
Der Einfachheit halber ist dies für eine Hauptwebsite namens =domain= mit zwei zusätzlichen Websites =two=.=domain= und =three=.=domain=. Sie können beliebige Namen verwenden, aber um der Einfachheit halber in dieser Vorlage ist es einfacher, keinen unterschiedlichen short name (für den Datenbanknamen und den Titel des Unterforums) und full hostname zu haben.
Fügen Sie in app.yml oder web_only.yml nach den Plugins hooks hinzu
before_bundle_exec:
- file:
path: $home/config/multisite.yml
contents: |
=two=:
adapter: postgresql
database: =two=
pool: 25
timeout: 5000
host: data
password: NThmZTNjZjZhOTczNmVj
host_names:
- =two=.=domain=
=three=:
adapter: postgresql
database: =three=
pool: 25
timeout: 5000
host: data
password: NThmZTNjZjZhOTczNmVj
host_names:
- =three=.=domain=
after_db_migrate:
- exec: cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate
after_ssl:
# letsencrypt mitteilen, welche zusätzlichen Zertifikate abgerufen werden sollen
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /-d =domain= /
to: "-d =domain= -d =two=.=domain= -d =three=.=domain="
global: true
# nicht alle Hosts zurück zur Hauptdomain umleiten
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /if \\(\\$http_host[^\\}]*\\}/m
to: ""
Fügen Sie den Abschnitt after_postgres in app.yml oder data.yml hinzu
- exec: sudo -u postgres createdb =two= || exit 0
- exec:
stdin: |
grant all privileges on database =two= to discourse;
cmd: sudo -u postgres psql =two=
raise_on_fail: false
- exec: /bin/bash -c 'sudo -u postgres psql =two= <<< "alter schema public owner to discourse;"'
- exec: /bin/bash -c 'sudo -u postgres psql =two= <<< "create extension if not exists hstore;"'
- exec: /bin/bash -c 'sudo -u postgres psql =two= <<< "create extension if not exists pg_trgm;"'
- exec: sudo -u postgres createdb =three= || exit 0
- exec:
stdin: |
grant all privileges on database =three= to discourse;
cmd: sudo -u postgres psql =three=
raise_on_fail: false
- exec: /bin/bash -c 'sudo -u postgres psql =three= <<< "alter schema public owner to discourse;"'
- exec: /bin/bash -c 'sudo -u postgres psql =three= <<< "create extension if not exists hstore;"'
- exec: /bin/bash -c 'sudo -u postgres psql =three= <<< "create extension if not exists pg_trgm;"'
Danach,
./launcher rebuild app
oder
./launcher rebuild data
./launcher rebuild web_only
