Ich bin ein Anfänger im Webdesign und möchte aus Interesse eine technische Austausch-Community aufbauen. Ich bere plan, eine Discourse-Instanz einzurichten und diese Anleitung zu teilen. Ich hoffe, dass sie für Freunde, die Discourse installieren müssen, hilfreich ist und sie vor Fehlern bewahrt. Es gibt relativ wenige chinesische Tutorials für Discourse, und einige sind bereits veraltet. Ich habe mehrere Tage damit verbracht, sie mit Hilfe von Übersetzungssoftware zu studieren.
Was Sie für den Aufbau Ihrer eigenen Discourse-Instanz benötigen:
Eine Alibaba Cloud Lightweight Cloud-Server-Instanz in Hongkong. Das Herunterladen von GitHub-Plugins auf chinesischen Servern ist extrem langsam, daher empfehle ich die Verwendung einer Alibaba Cloud Lightweight-Instanz in Hongkong oder einer anderen leichtgewichtigen Serverlösung. Lightweight-Server sind günstiger und für Anfänger geeignet. Die Konfiguration muss einen Arbeitsspeicher von mehr als 2 GB haben, sonst ist die Installation nicht möglich. Wenn Sie auf einem chinesischen Server installieren möchten, können Sie eine Hongkong-Instanz mit nutzungsbasierter Abrechnung verwenden und dann ein Image erstellen und es auf den chinesischen Server klonen, um Zeit beim Debugging zu sparen.
Ein kurzer, leicht zu merkender Domainname, der auf die Server-IP aufgelöst wird. Ich empfehle .com und .net. Andere Domains mangelt es an Wiedererkennungswert. Sie können Domainnamen unter Massen-Domainabfrage suchen und nach kurzen Namen mit Regeln suchen.
System: Ubuntu 20.04, da es weit verbreitet ist.
Nachdem Sie einen neuen Server aktiviert haben, öffnen Sie zuerst alle Firewall-Ports (nachdem Sie das Debugging abgeschlossen haben, schließen Sie die Ports nach Bedarf und behalten Sie nur die verwendeten Ports, um Hackerangriffe zu vermeiden). Stellen Sie das Root-Passwort im Control Panel ein und verbinden Sie sich dann direkt über SSH über den Webbrowser mit dem Server oder laden Sie eine SSH-Software wie XTerminal herunter.
Fügen Sie dann die folgenden drei Befehle ein und drücken Sie Enter, um sie auszuführen. Wenn Optionen angezeigt werden, drücken Sie “yes”, um die Systemquellen zu aktualisieren und die Git-Software zu installieren.
apt update
apt upgrade -y
apt install git
Fügen Sie dann die folgenden drei Befehle ein und drücken Sie Enter, um sie als Administrator auszuführen. Dieser Schritt sudo -s kann bei unachtsamer Bedienung zu Fehlermeldungen bei der Erstellung von Verzeichnissen während der Installation führen, was zu einem Installationsfehler führt, da die Berechtigungen fehlen.
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers
Nach dem Herunterladen führen Sie das Installationsprogramm aus.
./discourse-setup
Geben Sie dann die zu bindende Domain gemäß den Hinweisen ein. Die erste Installation dauert lange. Es wird empfohlen, für die erste Installation alle Domains außer der Hauptdomain beliebig einzugeben und sie später neu zu erstellen, wenn die Installation erfolgreich war. Sie können Screenshots machen und die WeChat-Bildübersetzungsfunktion verwenden, wenn Sie etwas nicht verstehen. Für E-Mails können Sie den Alibaba Cloud Mail Service verwenden.
Dann wird eine Aufforderung angezeigt, ob Sie die Installation fortsetzen oder mit Strg+C abbrechen möchten. Es wird empfohlen, die Installation fortzusetzen.
Nach Abschluss der Installation und dem Aufrufen der gebundenen Domain erscheint die Registrierungsseite, was bedeutet, dass Discourse erfolgreich installiert wurde.
Installieren Sie dann ein Linux-Panel. Dieser Schritt dient hauptsächlich der Installation anderer Website-Programme und der einfachen Verwaltung für Anfänger. Im Vergleich dazu ist dieses Panel viel einfacher als Baota, hat weniger Werbung und die Installation dauert nur wenige Sekunden, anstatt wie bei Baota lange Kompilierungszeiten für die Umgebung zu benötigen.
Führen Sie das folgende Skript aus:
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
Während der Installation wird eine Meldung angezeigt, dass Docker bereits installiert ist, und dann wird die Anmeldung im Backend angezeigt.
Folgen Sie den Anweisungen, finden Sie das Backend und melden Sie sich an. In der Containerverwaltung sehen Sie die App, das ist Discourse, die Sie hier starten oder stoppen können.
Wechseln Sie dann in die Dateien und bearbeiten Sie app.yml. Die wichtigsten zu ändernden Stellen sind mit chinesischen Kommentaren versehen.
## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
## Uncomment the next line to enable the IPv6 listener
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Set db_shared_buffers to a max of 25% of the total memory.
## will be set automatically by bootstrap based on detected RAM, or you can override
db_shared_buffers: "128MB"
## Ändern Sie die maximale Upload-Größe für Anhänge
upload_size: 300m
## can improve sorting performance, but adds memory usage per-connection
#db_work_mem: "40MB"
## Which Git revision should this container use? (default: 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: zh_CN
## How many concurrent web requests are supported? Depends on memory and CPU cores.
## will be set automatically by bootstrap based on detected CPUs, or you can override
UNICORN_WORKERS: 2
## TODO: The domain name this Discourse instance will respond to
## Required. Discourse will not work with a bare IP number.
## Ändern Sie die Hauptdomain
DISCOURSE_HOSTNAME: bbs.izdh.net
## Uncomment if you want the container to be started with the same
## hostname (-h option) as specified above (default "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: List of comma delimited emails that will be made admin and developer
## on initial signup example 'user1@example.com,user2@example.com'
## Ändern Sie die Admin-E-Mail
DISCOURSE_DEVELOPER_EMAILS: 'xxxx@gmail.com'
## TODO: The SMTP mail server used to validate new accounts and send notifications
# SMTP ADDRESS, username, and password are required
# WARNING the char '#' in SMTP password can cause problems!
## Ändern Sie den SMTP-Mailserver
DISCOURSE_SMTP_ADDRESS: smtpdm.aliyun.com
## Ändern Sie den SMTP-Port
DISCOURSE_SMTP_PORT: 80
## Ändern Sie den Absender-E-Mail-Konto
DISCOURSE_SMTP_USER_NAME: xxxx@xxx.net
## Ändern Sie das Passwort für den Absender-E-Mail-Server
DISCOURSE_SMTP_PASSWORD: "dj6bCRxoHt25NcD6"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
DISCOURSE_SMTP_DOMAIN: smtpdm.aliyun.com
## Ändern Sie den Absender-E-Mail-Konto
DISCOURSE_NOTIFICATION_EMAIL: xxxx@xxx.net
DISCOURSE_SMTP_ENABLE_START_TLS: false
## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## The http or https CDN address for this Discourse instance (configured to pull)
## see https://meta.discourse.org/t/14857 for details
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## The maxmind geolocation IP address key for IP address lookup
## see https://meta.discourse.org/t/-/137387/23 for details
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## The Docker container is stateless; all data is stored in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins go here
## see https://meta.discourse.org/t/19157 for details
## Install 2 plugins
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-solved
- git clone https://github.com/discourse/discourse-reactions
## Any custom commands to run after building
run:
- exec: echo "Beginning of custom commands"
## If you want to set the 'From' email address for your first registration, uncomment and change:
## After getting the first signup email, re-comment the line. It only needs to run once.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"
Nachdem Sie die Änderungen gespeichert haben, kehren Sie zum Terminal zurück, verwenden Sie den Befehl oder stoppen Sie den Container im Backend und bauen Sie ihn dann neu. Es scheint jedoch, dass ohne die Installation dieses Panels der Container nicht gestoppt werden muss. Wenn Sie ihn nach der Installation des Panels nicht stoppen und neu erstellen, wird ein Fehler angezeigt.
./launcher stop app
./launcher bootstrap app
Warten Sie, bis der Neuaufbau abgeschlossen ist, und führen Sie den Befehl zum Starten des Containers aus.
./launcher start app
Wenn Sie Discourse aufrufen, werden Sie aufgefordert, eine E-Mail zur Aktivierung zu senden. Wenn Sie keine erhalten, können Sie den folgenden Befehl verwenden, um einen Administrator-Account zu erstellen und ihn zu überspringen. Stellen Sie dann die Sprache in den Einstellungen auf Chinesisch ein. Es gibt auch eine Stelle, an der Sie E-Mail-Tests durchführen können. Dort wird der Grund für den Fehler angezeigt. Versuchen Sie es mehrmals, bis es erfolgreich ist.
./launcher enter app
rake admin:create
Wenn Sie andere Websites erstellen müssen, beziehen Sie sich bitte auf die offizielle Anleitung. Da dies recht einfach ist, werde ich nicht weiter darauf eingehen. Sie können auch eine neue Umgebung auf der Website erstellen, die Website-Berechtigungen auf 777 ändern und dann verschiedene Programme installieren.
Das Hauptproblem, das gelöst werden soll, ist, dass mehrere Websites auf einem Server laufen können, was die Kosten für den Kauf von Servern spart und für Anfänger besser geeignet ist.
Ein Problem, das beim Testen des E-Mail-Versands später auftrat:
Diese Einstellungen im Container, die Bearbeitung in app.yml, scheinen keinen Einfluss auf den Neuaufbau zu haben. Sie müssen in den Container-Umgebungsvariablen geändert werden. Dies dauert jedoch nur 5-6 Sekunden, um wirksam zu werden. Ob dies Auswirkungen auf die Plugin-Installation hat, ist noch unklar.
Das Zusammenleben mit anderen Websites scheint darin zu bestehen, zuerst einen Reverse-Proxy zu erstellen, dann den Standard-Container-Port 443 in einen 10443 zu ändern und dann das Zertifikat zu konfigurieren, um normal darauf zugreifen zu können.
Reverse-Proxy
Zertifikat konfigurieren









