Ich bin auf einen Fehler gestoßen, als ich Discourse zum ersten Mal auf meinem Server installiert habe
Ubuntu 22.04LTS
Discourse neueste GitHub-Version
2 GB RAM
2 GB Swap
Fehler
2023-06-08 01:19:04.972 UTC [55] postgres@template1 ERROR: database "discourse" already exists
2023-06-08 01:19:04.972 UTC [55] postgres@template1 STATEMENT: CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR: database "discourse" already exists
I, [2023-06-08T01:19:04.977485 #1] INFO -- :
I, [2023-06-08T01:19:04.978414 #1] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2023-06-08 01:19:05.654 UTC [59] postgres@discourse ERROR: role "discourse" already exists
2023-06-08 01:19:05.654 UTC [59] postgres@discourse STATEMENT: create user discourse;
ERROR: role "discourse" already exists
Grund
Dies ist meine erste Installation auf dem Server, aber ich habe die Anwendung wegen anderer Fehler mehrmals neu aufgebaut, wie z. B. My server can access github, but docker can't - #2 by whitewaterdeu
Ich weiß nicht, wann ich die Datenbank erstellt habe und wie ich das beheben kann.
Mein app.yml
root@cvm-3k8ngdw25i225:/var/discourse# cat containers/app.yml
## Dies ist die All-in-One-Standalone-Discourse-Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSSEN Sie neu erstellen
## /var/discourse/launcher rebuild app
##
## SEIEN SIE *SEHR* VORSICHTIG BEIM BEARBEITEN!
## YAML-DATEIEN SIND SUPER SUPER EMPFINDLICH GEGEN FEHLER BEI LEERZEICHEN ODER AUSRICHTUNG!
## Besuchen Sie http://www.yamllint.com/, um diese Datei nach Bedarf zu validieren.
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
# - "templates/web.china.template.yml"
- "templates/web.template.yml"
## Kommentar entfernen, um den IPv6-Listener zu aktivieren
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
## Kommentar entfernen, wenn Sie Lets Encrypt (https) hinzufügen möchten
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
## Welche TCP/IP-Ports soll dieser Container bereitstellen?
## Wenn Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilen soll,
## 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 Gesamtspeichers.
## wird automatisch von bootstrap basierend auf erkanntem RAM gesetzt, oder Sie können ü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:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: 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 von bootstrap basierend auf erkannten CPUs gesetzt, oder Sie können überschreiben
UNICORN_WORKERS: 4
## TODO: Der Domainname, unter dem diese Discourse-Instanz erreichbar sein wird
## Erforderlich. Discourse funktioniert nicht mit einer reinen IP-Nummer.
DISCOURSE_HOSTNAME: discuss.beginner.center
## 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 per Komma getrennten E-Mails, die beim ersten Login Administrator und Entwickler werden
## Beispiel: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'whitewatercn@outlook.com'
## TODO: Der SMTP-Mailserver, der zum Überprüfen neuer Konten und zum Senden von Benachrichtigungen verwendet wird
# SMTP-ADRESSE, Benutzername und Passwort sind erforderlich
# ACHTUNG: Das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: notification@mg.beinner.center
DISCOURSE_SMTP_PASSWORD: "my smtp password"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, Standard true)
DISCOURSE_SMTP_DOMAIN: mg.beinner.center
DISCOURSE_NOTIFICATION_EMAIL: notification@mg.beinner.center
## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, entfernen Sie den Kommentar unten, um ein kostenloses SSL-Zertifikat zu erhalten
LETSENCRYPT_ACCOUNT_EMAIL: notification@mg.beinner.center
## 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 Maxmind Geolocation IP-Adressschlüssel für die IP-Adresssuche
## siehe https://meta.discourse.org/t/-/137387/23 für Details
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## 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 hier einfügen
## 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
## Alle benutzerdefinierten Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Wenn Sie die E-Mail-Adresse des Absenders für Ihre erste Registrierung festlegen möchten, kommentieren Sie die Zeile aus und ändern Sie sie:
## Nachdem Sie die erste Registrierungs-E-Mail erhalten haben, kommentieren Sie die Zeile wieder aus. Sie muss nur einmal ausgeführt werden.
- exec: rails r "SiteSetting.notification_email='notification@mg.beinner.center'"
- exec: echo "Ende der benutzerdefinierten Befehle"root@cvm-3k8ngdw25i225:/var/discourse#