Mehrere Sites als verschiedene Container auf demselben Do-Server ausgeführt

Ich habe Site 1 erfolgreich installiert und betriebe sie seit über einem Monat. Heute habe ich die Anweisungen hier befolgt: https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247. Ich habe die erste Discourse-Konfiguration bearbeitet, eine externe Nginx-Instanz auf dem Host-System installiert und die erste Discourse-Instanz neu aufgebaut.

app.yml der ersten Site

root@docker-s-1vcpu-2gb-sgp1-01:~# cat /var/bbs-antivte-discourse/containers/app.yml
## Dies ist die All-in-One, eigenständige Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSSEN Sie neu aufbauen
## /var/discourse/launcher rebuild app
##
## SEIEN SIE *SEHR* VORSICHTIG BEI DER BEARBEITUNG!
## YAML-DATEIEN SIND SUPER SUPER 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"
## Entfernen Sie den Kommentar bei diesen zwei Zeilen, wenn Sie Lets Encrypt (https) hinzufügen möchten
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"  # <-- Hinzugefügt
## Welche TCP/IP-Ports soll dieser Container freigeben?
## Wenn Sie möchten, 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"

  ## Setzen Sie db_shared_buffers auf maximal 25 % des gesamten Arbeitsspeichers.
  ## Wird automatisch beim Booten basierend auf dem erkannten RAM festgelegt, oder Sie können es überschreiben
  db_shared_buffers: "256MB"

  ## 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 vom Arbeitsspeicher und den CPU-Kernen ab.
  ## Wird automatisch beim Booten basierend auf den erkannten CPUs festgelegt, oder Sie können es überschreiben
  UNICORN_WORKERS: 4

  ## TODO: Der Domainname, auf den diese Discourse-Instanz antworten soll
  ## Erforderlich. Discourse funktioniert nicht mit einer reinen IP-Nummer.
  DISCOURSE_HOSTNAME: bbs.antivte.com

  ## Kommentar entfernen, wenn der Container mit demselben
  ## Hostnamen (-h-Option) wie oben angegeben gestartet werden soll (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: 'techempower@163.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.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: postmaster@mail.antivte.com
  DISCOURSE_SMTP_PASSWORD: "67c9458eb7a6ff11b4db70f097b1b5c3-f7910792"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, Standard true)

  ## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, entfernen Sie unten den Kommentar, um ein kostenloses SSL-Zertifikat zu erhalten
  LETSENCRYPT_ACCOUNT_EMAIL: techempower@163.com

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

## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
  - volume:
      host: /var/bbs-antivte-discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/bbs-antivte-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/discourse/discourse-knowledge-explorer
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/procourse/procourse-static-pages
## Beliebige benutzerdefinierte Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
  - exec: echo "Beginn der benutzerdefinierten Befehle"
  ## Wenn Sie die 'From'-E-Mail-Adresse für Ihre erste Registrierung festlegen möchten, entfernen Sie den Kommentar und ändern Sie:
  ## Nach Erhalt der ersten Anmelde-E-Mail den Kommentar bei dieser Zeile wieder hinzufügen. Sie muss nur einmal ausgeführt werden.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Ende der benutzerdefinierten Befehle"

Für die Installation der zweiten Site habe ich den Quellcode in ein anderes Verzeichnis geklont, die bearbeitete app.yml der ersten Site kopiert und darin nur die Domain und den Klone-Verzeichnisnamen für meine zweite Site angepasst. Anschließend habe ich https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md ausgeführt.

./discourse-setup

Ich war verwirrt durch die folgenden Hinweise, und ich habe zwei verschiedene Nginx-Konfigurationen für die 2 Sites.

Nginx-Konfiguration der ersten Site

root@docker-s-1vcpu-2gb-sgp1-01:~# cat /var/website/conf/conf.d/ytb.antivte.com 


server {
    listen 80; listen [::]:80;
    server_name ytb.antivte.com;  # <-- ändern Sie dies

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;  listen [::]:443 ssl http2;
    server_name ytb.antivte.com;  # <-- ändern Sie dies

#    ssl on;
    ssl_certificate      /var/ytb-antivte-discourse/shared/standalone/ssl/ssl.crt;
    ssl_certificate_key  /var/ytb-antivte-discourse/shared/standalone/ssl/ssl.key;
    ssl_dhparam          /var/ytb-antivte-discourse/shared/standalone/ssl/dhparams.pem;
    ssl_session_tickets off;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;

    http2_idle_timeout 5m; # von 3m Standard erhöht

    location / {
        proxy_pass http://unix:/var/ytb-antivte-discourse/shared/standalone/nginx.http.sock:;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Nginx-Konfiguration der zweiten Site

server {
    listen 80; listen [::]:80;
    server_name bbs.antivte.com;  # <-- ändern Sie dies

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;  listen [::]:443 ssl http2;
    server_name bbs.antivte.com;  # <-- ändern Sie dies

#    ssl on;
    ssl_certificate      /var/bbs-antivte-discourse/shared/standalone/ssl/bbs.antivte.com.cer;
    ssl_certificate_key  /var/bbs-antivte-discourse/shared/standalone/ssl/bbs.antivte.com.key;
    ssl_dhparam          /var/bbs-antivte-discourse/shared/standalone/ssl/dhparams.pem;
    ssl_session_tickets off;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;

    http2_idle_timeout 5m; # von 3m Standard erhöht

    location / {
        proxy_pass http://unix:/var/bbs-antivte-discourse/shared/standalone/nginx.http.sock:;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

und

    /var/ytb-antivte-discourse/discourse-setup 
Port 80 scheint bereits belegt zu sein.

Dies zeigt Ihnen, welcher Befehl Port 80 verwendet
COMMAND  PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx   4255   root    6u  IPv4 22842780      0t0  TCP *:http (LISTEN)
nginx   4255   root    7u  IPv6 22842781      0t0  TCP *:http (LISTEN)
nginx   4256 nobody    6u  IPv4 22842780      0t0  TCP *:http (LISTEN)
nginx   4256 nobody    7u  IPv6 22842781      0t0  TCP *:http (LISTEN)

Wenn Sie Discourse gleichzeitig mit einem anderen Web
server wie Apache oder Nginx ausführen möchten, müssen Sie an einen anderen Port binden

Siehe https://meta.discourse.org/t/17247

Wenn Sie eine bereits konfigurierte Discourse neu konfigurieren, verwenden Sie 

./launcher stop app

um Discourse zu stoppen, bevor Sie es neu konfigurieren und es erneut versuchen.

Warum steht diese Zeile doppelt?

Was du tun solltest, ist die Datei app.yml im Verzeichnis containers umbenennen.

Du musst auch deine Mailgun-Anmeldedaten ändern, falls dies dein echtes Passwort ist.

Du kannst discourse-setup nicht ausführen, wenn ein Webserver läuft. Du solltest die Dateien stattdessen selbst mit nano oder einem ähnlichen Editor bearbeiten. Das Skript ist nur für die Standardfälle ausgelegt.

Du kannst discourse-setup nicht ausführen, wenn ein Webserver läuft. Du solltest die Dateien selbst mit nano oder einem ähnlichen Tool bearbeiten. Es ist nur für die gängigsten Situationen ausgelegt.

Ich habe meinen Nginx laufen, falls das das ist, was du meinst.
Welche Datei soll ich bearbeiten? Ich verstehe nicht, was gemeint ist.