Dieses Tutorial zeigt Ihnen, wie Sie Discourse auf einem Ubuntu 18.04-Server installieren. Discourse wurde von Jeff Atwood, dem Gründer von StackExchange, entwickelt und ist ein Open-Source-Internetforum (auch bekannt als Online Message Board) und eine Software zur Verwaltung von Mailinglisten mit dem Ziel, die Forendiskussion zu revolutionieren. Es wurde mit Ember.js und Ruby on Rails geschrieben und verwendet PostgreSQL als Back-End-Datenbankverwaltungssystem.
Merkmale des Diskurses
- Unendliches Scrollen. Es gibt keine nächste Seite in einem Thread. Scrollen Sie einfach nach unten, um mehr zu lesen.
- Live-Updates, Drag-and-Drop-Anhänge.
- Forenthreads können nach Beliebtheit geordnet werden.
- Die „Best of Thread“-Ansicht kann die beste Antwort auf einen bestimmten Thread anzeigen.
- Die Fähigkeit, sich zu merken, wo Sie in einem Thread gelesen haben.
- Erweitern von URLs, um eine Zusammenfassung der URL bereitzustellen.
- Benutzer können per E-Mail antworten.
- Das Meldesystem blendet unangemessene Beiträge automatisch aus, bis sie von einem Mitarbeiter überprüft werden können.
- Moderatoren können jedes Thema aufteilen, zusammenführen, lokalisieren oder archivieren.
- Je nach Vertrauensniveau kann ein Benutzer als Moderator befördert oder als Troll, schlechter Schauspieler oder Spammer herabgestuft werden, um das Forum zivilisiert zu halten. Eingebauter Akismet-Spamschutz und Heuristik, einschließlich neuer Benutzer-Sandboxing, Benutzer-Flag-Blockierung und Standard-NoFollow.
- Ein Badge-System kann zeigen, was ein Benutzer erreicht hat.
- Für Mobilgeräte optimiertes, ansprechendes Webdesign. Benutzer können von Laptop, Tablet und Telefon aus lesen oder posten.
- 100 % kostenlose Open Source. Keine kostenpflichtige kommerzielle Version mit besseren oder vollständigeren Funktionen.
- Einzelanmeldung. Integrieren Sie Discourse nahtlos in das Anmeldesystem Ihrer bestehenden Website.
- Soziale Anmeldung. Fügen Sie ganz einfach gängige soziale Logins wie Google, Facebook, Twitter usw. hinzu.
- iOS- und Android-App verfügbar.
- Verfügbar in mehr als 30 Sprachen.
- Zwei-Faktor-Authentifizierung zur Verbesserung der Kontosicherheit.
- Und viele mehr.
Voraussetzungen für die Installation von Discourse auf Ubuntu 18.04 ohne Docker
Die offizielle Methode zur Installation von Discourse ist Docker, was sich hervorragend für diejenigen eignet, die eine Anwendung schnell zum Laufen bringen möchten. Aber Docker ist auch ressourcenhungrig. Denken Sie einmal darüber nach:Wenn Sie bereits einige Komponenten wie den PostgreSQL-Datenbankserver zum Laufen gebracht haben, führt die Docker-Methode immer noch eine separate PostgreSQL-Datenbank innerhalb des Containers aus, was eine Verschwendung von Serverressourcen ist. Sie benötigen einen 2-GB-RAM-Server, um Discourse mit Docker auszuführen. Ich werde Ihnen zeigen, wie Sie Discourse auf einem 1-GB-RAM-Server ohne Docker ausführen.
Um Discourse auszuführen, benötigen Sie einen Server mit mindestens 1 GB RAM. Sie können auf diesen Empfehlungslink klicken, um ein Konto bei Vultr zu erstellen und 50 $ kostenloses Guthaben zu erhalten (nur für neue Benutzer). Sobald Sie ein Konto bei Vultr haben, installieren Sie Ubuntu 18.04 auf Ihrem Server und folgen Sie den Anweisungen unten.
Außerdem benötigen Sie einen Domänennamen. Ich habe meinen Domainnamen bei NameCheap registriert, weil der Preis niedrig ist und sie lebenslangen Whois-Datenschutz bieten.
Hinweis :Ich habe Discourse mit einem sudo-Benutzer auf Ubuntu 18.04 installiert. Für beste Ergebnisse sollten Sie dieses Tutorial auch mit einem sudo-Benutzer und nicht mit root befolgen.
Um einen sudo-Benutzer hinzuzufügen, führen Sie einfach
aussudo adduser username sudo adduser username sudo
Wechseln Sie dann zum neuen Benutzer.
su - username
Schritt 1:PostgreSQL-Datenbankserver konfigurieren
Melden Sie sich über SSH bei Ihrem Server an und führen Sie dann den folgenden Befehl aus, um PostgreSQL aus dem standardmäßigen Ubuntu-Software-Repository zu installieren.
sudo apt install postgresql
Der PostgreSQL-Datenbankserver wird automatisch gestartet und lauscht auf 127.0.0.1:5432
, wie mit dem folgenden Befehl zu sehen ist. (Falls Ihr Ubuntu-Server nicht über die netstat
Befehl können Sie sudo apt install net-tools
ausführen Befehl, um es zu installieren.)
sudo netstat -lnpt | grep postgres
Wenn Sie keine Ausgabe des obigen Befehls sehen, liegt das wahrscheinlich daran, dass der PostgreSQL-Server nicht läuft. Sie können den PostgreSQL-Server starten, indem Sie den folgenden Befehl ausführen.
sudo systemctl start postgresql
Das postgres
Benutzer wird während des Installationsvorgangs auf dem Betriebssystem erstellt. Es ist der Superuser für den PostgreSQL-Datenbankserver. Standardmäßig hat dieser Benutzer kein Passwort und es muss auch keins festgelegt werden, da Sie sudo
verwenden können um zu postgres
zu wechseln Benutzer und melden Sie sich bei der PostgreSQL-Konsole an.
sudo -u postgres psql
Erstellen Sie eine Datenbank für Diskurs.
CREATE DATABASE discourse;
Erstellen Sie einen Datenbankbenutzer.
CREATE USER discourse_user;
Legen Sie ein Passwort für diesen Benutzer fest.
ALTER USER discourse_user WITH ENCRYPTED PASSWORD 'your_preferred_password';
Legen Sie diesen Benutzer als Eigentümer der Diskursdatenbank fest.
ALTER DATABASE discourse OWNER TO discourse_user;
Stellen Sie eine Verbindung zur Diskursdatenbank her.
\c discourse;
Erstellen Sie den hstore
und pg_trgm
Erweiterung.
CREATE EXTENSION hstore; CREATE EXTENSION pg_trgm;
Melden Sie sich von der PostgreSQL-Konsole ab.
\q
Schritt 2:Installieren Sie Ruby auf Ubuntu 18.04
Discourse erfordert Ruby 2.7 oder höher. Das Ubuntu 18.04-Repository wird jedoch mit Ruby 2.5.1 geliefert. Die neueste Version von Ruby ist 3.0.1. Ich empfehle jedoch nicht, die neueste Version zu verwenden, da diese möglicherweise nicht mit Discourse kompatibel ist. Für beste Kompatibilität empfehle ich die Installation von Ruby 2.7 von einem PPA.
sudo apt install software-properties-common sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt install ruby2.7
Um Ihre Ruby-Versionsnummer zu überprüfen, führen Sie
ausruby -v
Ausgabe:
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-gnu]
Schritt 3:Diskurs herunterladen und konfigurieren
Installieren Sie das Git-Tool.
sudo apt install git
Angenommen, Sie befinden sich in Ihrem Home-Verzeichnis, führen Sie den folgenden Befehl aus, um das Discourse-Code-Repository von Github zu klonen.
git clone https://github.com/discourse/discourse.git
Erstellen Sie das Verzeichnis /var/www/, falls es noch nicht erstellt wurde.
sudo mkdir /var/www/
Verschieben Sie das Diskursverzeichnis nach /var/www/
.
sudo mv discourse/ /var/www/
Wechseln Sie in das Verzeichnis und verwenden Sie die neueste stabile Version von Discourse. Sie können zur Github-Release-Seite gehen, um die neueste stabile Version zu sehen. Ich verwende jetzt v2.5.0.
cd /var/www/discourse/ git checkout v2.5.0
Bundler installieren:der Ruby-Abhängigkeitsmanager.
sudo /usr/bin/gem install bundler
Installieren Sie die folgenden Pakete, um den Quellcode zu kompilieren.
sudo apt-get install gcc build-essential ruby2.7-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick
Installieren Sie dann Abhängigkeiten von Discourse. Dieser Prozess könnte viel RAM verbrauchen.
RAILS_ENV=production /usr/local/bin/bundle config set path '/var/www/discourse/vendor/bundle/' RAILS_ENV=production /usr/local/bin/bundle install
Kopieren Sie die Standardkonfigurationsdatei in eine neue Datei.
cp config/discourse_defaults.conf config/discourse.conf
Bearbeiten Sie die neue Datei.
nano config/discourse.conf
Konfigurieren Sie die Datenbankverbindung.
# host address for db server # This is set to blank so it tries to use sockets first db_host = localhost # port running db server, no need to set it db_port = 5432 # database name running discourse db_name = discourse # username accessing database db_username = discourse_user # password used to access the db db_password = your_password
Ändern Sie den mit Ihrem Discourse-Forum verwendeten Domänennamen.
# hostname running the forum hostname = "community.example.com"
Speichern und schließen Sie die Datei.
Schritt 4:Erhalten Sie einen kostenlosen MaxMind-Lizenzschlüssel
Discourse wird mit einem integrierten Webanalysetool geliefert. Wenn Sie die geografischen Informationen Ihrer Besucher wissen möchten, benötigen Sie einen MaxMind-Lizenzschlüssel.
Erstellen Sie ein Konto bei MaxMind. Maxmind sendet Ihnen eine E-Mail. Klicken Sie auf den Link in der E-Mail, um ein Passwort festzulegen, und melden Sie sich dann bei Ihrem MaxMind-Konto an. Wählen Sie als Nächstes My License Key
auf der linken Leiste.
Klicken Sie auf Neuen Lizenzschlüssel generieren Schaltfläche.
Geben Sie Ihrem Lizenzschlüssel einen Namen. Wählen Sie dann No
, weil wir das geoipupdate
nicht verwenden müssen Programm. Klicken Sie dann auf Confirm
Schaltfläche.
Nachdem der Lizenzschlüssel erstellt wurde, kopieren Sie den Lizenzschlüssel. Öffnen Sie die Discourse-Konfigurationsdatei.
nano config/discourse.conf
Suchen Sie die folgende Zeile und fügen Sie hier Ihren Lizenzschlüssel hinzu.
maxmind_license_key=
Speichern und schließen Sie die Datei.
Schritt 5:Diskurs starten
Erforderliche Pakete installieren.
sudo apt install redis-server optipng pngquant jhead jpegoptim gifsicle nodejs npm sudo npm install -g svgo
Bearbeiten Sie die Konfigurationsdatei der Produktionsumgebung.
nano /var/www/discourse/config/environments/production.rb
Fügen Sie den folgenden Code als fünfte Zeile hinzu.
require 'uglifier'
Suchen Sie dann die folgende Zeile.
config.assets.js_compressor = :uglifier
Ersetzen Sie es durch:
config.assets.js_compressor = Uglifier.new(:harmony => true)
Speichern und schließen Sie die Datei. Führen Sie dann den folgenden Befehl aus, um die Datenbank zu initialisieren. Wenn Sie während dieses Schritts Fehler sehen, führen Sie den Befehl einfach erneut aus.
RAILS_ENV=production /usr/local/bin/bundle exec rake db:migrate
Als nächstes werden wir statische Assets wie JavaScript kompilieren, aber vorher müssen wir eine Datei bearbeiten.
nano /var/www/discourse/lib/tasks/assets.rake
Wir müssen die Zeilen finden, die brotli
enthalten und kommentieren Sie sie aus, um die Brotili-Komprimierung zu deaktivieren, da die JavaScript-Dateien mit Gzip komprimiert werden. Wenn sowohl die Gzip- als auch die Brotili-Komprimierung aktiviert sind, treten beim Kompilieren der Assets einige ärgerliche Fehler auf. Suchen Sie die folgende Zeile (Zeile 281) und kommentieren Sie sie aus.
brotli(path, max_compress)
Speichern und schließen Sie die Datei. Führen Sie als Nächstes den folgenden Befehl aus, um Assets zu kompilieren. Dieser Prozess kann viel RAM verwenden, z. B. 1 GB.
RAILS_ENV=production /usr/local/bin/bundle exec rake assets:precompile
Bearbeiten Sie als Nächstes die Datei puma.rb Datei
nano /var/www/discourse/config/puma.rb
Suchen Sie die folgende Zeile.
APP_ROOT = '/home/discourse/discourse'
Ändern Sie den Anwendungspfad in
APP_ROOT = '/var/www/discourse'
Speichern und schließen Sie die Datei. Erstellen Sie dann die Sockets und das Prozess-ID-Verzeichnis.
mkdir /var/www/discourse/tmp/sockets/ /var/www/discourse/tmp/pids/
Diskurs starten.
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Beispielausgabe:
[24161] Puma starting in cluster mode... [24161] * Version 4.3.1 (ruby 2.7.1-p146), codename: Mysterious Traveller [24161] * Min threads: 8, max threads: 32 [24161] * Environment: development [24161] * Process workers: 4 [24161] * Preloading application [24161] * Listening on unix:///var/www/discourse/tmp/sockets/puma.sock [24161] ! WARNING: Detected 4 Thread(s) started in app boot: [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:38 sleep_forever> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:40:in `pop' [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus.rb:667 sleep> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/connection/ruby.rb:68:in `select' [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:123:in `sleep' [24161] ! #<Thread:[email protected]/discourse.rb:708 sleep> - lib/discourse.rb:711:in `sleep' [24161] * Daemonizing...
Discourse lauscht auf dem Unix-Socket:/var/www/discourse/tmp/sockets/puma.sock .
Schritt 6:Nginx-Reverse-Proxy konfigurieren
Installieren Sie den Nginx-Webserver aus dem standardmäßigen Ubuntu 18.04-Software-Repository.
sudo apt install nginx
Kopieren Sie die Beispielkonfigurationsdatei für den virtuellen Nginx-Host.
sudo cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
Bearbeiten Sie die neue Datei.
sudo nano /etc/nginx/conf.d/discourse.conf
Suchen Sie die folgenden Zeilen und kommentieren Sie sie aus, da wir Puma verwenden werden.
upstream discourse { server unix:/var/www/discourse/tmp/sockets/nginx.http.sock; server unix:/var/www/discourse/tmp/sockets/nginx.https.sock; }
Suchen Sie die folgenden Zeilen und kommentieren Sie sie aus.
# upstream discourse { # server unix:/var/www/discourse/tmp/sockets/puma.sock; # }
Suchen Sie die folgende Zeile.
server_name enter.your.web.hostname.here;
Ändern Sie den Servernamen. Vergessen Sie nicht, den DNS-A-Eintrag für den Domainnamen hinzuzufügen.
server_name community.example.com;
Nginx unterstützt standardmäßig keine Brotli-Komprimierung, also kommentieren Sie die folgende Zeile aus.
brotli_static on;
Speichern und schließen Sie die Datei. Erstellen Sie das Cache-Verzeichnis.
sudo mkdir -p /var/nginx/cache/
Testen Sie dann die Nginx-Konfiguration.
sudo nginx -t
Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderungen wirksam werden.
sudo systemctl reload nginx
Jetzt sollten Sie das Discourse-Forum unter http://community.example.com
sehen können .
Schritt 7:HTTPS aktivieren
Um den HTTP-Verkehr zu verschlüsseln, können wir HTTPS aktivieren, indem wir ein kostenloses TLS-Zertifikat installieren, das von Let’s Encrypt ausgestellt wurde. Führen Sie den folgenden Befehl aus, um den Let’s Encrypt-Client (certbot) auf dem Ubuntu 18.04-Server zu installieren.
sudo apt install certbot python3-certbot-nginx
Führen Sie als Nächstes den folgenden Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d community.example.com
Wo
--nginx
:Verwenden Sie das nginx-Plugin.--agree-tos
:Nutzungsbedingungen akzeptieren.--redirect
:HTTPS durch 301-Umleitung erzwingen.--hsts
: Fügen Sie den Strict-Transport-Security-Header zu jeder HTTP-Antwort hinzu. Erzwingen, dass der Browser immer TLS für die Domäne verwendet. Schützt vor SSL/TLS-Stripping.--staple-ocsp
: Aktiviert OCSP-Heften. Eine gültige OCSP-Antwort wird an das Zertifikat geheftet, das der Server während TLS anbietet.
Das Zertifikat sollte nun abgerufen und automatisch installiert werden.
Und Sie können über HTTPS (https://community.example.com
) auf das Discourse-Forum zugreifen ).
Wenn Firefox ein gelbes Dreieck in der Adressleiste des Browsers anzeigt, liegt das daran, dass einige Bilder immer noch über das HTTP-Protokoll bereitgestellt werden. Um dieses Problem zu lösen, können Sie die Discourse Nginx-Konfigurationsdatei bearbeiten.
sudo nano /etc/nginx/conf.d/discourse.conf
Fügen Sie die folgende Zeile im SSL-Serverblock hinzu, um unsichere Anforderungen zu aktualisieren.
add_header Content-Security-Policy upgrade-insecure-requests;
Speichern und schließen Sie die Datei. Und Nginx neu laden.
sudo nginx -t sudo systemctl reload nginx
Schritt 8:Administratorkonto erstellen
Gehen Sie zum Diskursverzeichnis (/var/www/discourse/ ) und führen Sie den folgenden Befehl aus, um ein Administratorkonto zu erstellen.
RAILS_ENV=production /usr/local/bin/bundle exec rake admin:create
Sie werden aufgefordert, eine E-Mail-Adresse und ein Passwort für das Administratorkonto einzugeben.
Starten Sie danach Discourse neu.
RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart
Aktualisieren Sie jetzt die Discourse-Webseite und Sie können sich anmelden.
Wenn Sie den Fehler 502 Bad Gateway sehen, war der Neustartbefehl nicht erfolgreich, Sie müssen Discourse starten mit:
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Sobald Sie angemeldet sind, können Sie den Einrichtungsassistenten starten. (https://community.example.com/wizard) und befolgen Sie die Anweisungen, um die Installation abzuschließen. Wenn Sie Cloudflare CDN verwenden, müssen Sie zu den Einstellungen gehen -> Sicherheit -> Inhaltssicherheitsrichtlinie src und fügen Sie diese URL hinzu:https://community.example.com/cdn-cgi/
Schritt 9:Hintergrundverarbeitungsdienst konfigurieren:Sidekiq
Sidekiq ist ein Open-Source-Job-Scheduler. Viele Aufgaben, wie das Versenden von E-Mails, werden von sidekiq asynchron ausgeführt. Bearbeiten Sie die sidekiq.yml
Datei.
nano /var/www/discourse/config/sidekiq.yml
Fügen Sie die folgenden Zeilen am Ende der Datei hinzu. Diese Konfiguration eignet sich für ein Discourse-Forum mit geringer Benutzeraktivität und wenig RAM. Bei vielen Benutzeraktivitäten sollten Sie die Parallelität und die Anzahl der Warteschlangen verdoppeln.
production: :concurrency: 2 :queues: - [critical, 4] - [default, 2] - [low] - [ultra_low]
Speichern und schließen Sie die Datei. Erstellen Sie dann einen Systemd-Dienst für sidekiq.
sudo nano /etc/systemd/system/discourse-sidekiq.service
Fügen Sie die folgenden Zeilen in die Datei ein. Ersetzen Sie Benutzername mit Ihrem echten Benutzernamen.
[Unit] Description=Discourse sidekiq background processing service After=multi-user.target [Service] Type=simple User=username PIDFile=/var/www/discourse/tmp/pids/sidekiq.pid WorkingDirectory=/var/www/discourse Environment=RAILS_ENV=production ExecStart=/usr/local/bin/bundle exec sidekiq -C /var/www/discourse/config/sidekiq.yml Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
Speichern und schließen Sie die Datei. Starten und aktivieren Sie dann diesen Dienst.
sudo systemctl start discourse-sidekiq sudo systemctl enable discourse-sidekiq
Überprüfen Sie den Status. Stellen Sie sicher, dass es ausgeführt wird.
sudo systemctl status discourse-sidekiq
Das Sidekiq-Dashboard ist unter https://community.example.com/sidekiq
verfügbar .
Schritt 10:Systemd-Dienst für Diskurs erstellen
Stoppen Sie zuerst den aktuellen Diskursprozess mit
cd /var/www/discourse/ RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid stop
Bearbeiten Sie dann die puma.rb
Datei.
nano /var/www/discourse/config/puma.rb
Kommentieren Sie die folgenden zwei Zeilen aus (Fügen Sie den #
hinzu Symbol am Anfang jeder Zeile), weil Systemd die Prozess-ID und Daemonisierung handhabt.
pidfile "#{APP_ROOT}/tmp/pids/puma.pid" daemonize true
Erstellen Sie als Nächstes einen Systemd-Dienst für Discourse.
sudo nano /etc/systemd/system/discourse.service
Fügen Sie die folgenden Zeilen in die Datei ein. Ersetzen Sie Benutzername mit Ihrem echten Benutzernamen.
[Unit] Description=Discourse service [Service] Type=simple User=username PIDFile=/var/www/discourse/tmp/pids/puma.pid WorkingDirectory=/var/www/discourse Environment=RAILS_ENV=production ExecStart=/usr/local/bin/bundle exec puma -C config/puma.rb Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
Speichern und schließen Sie die Datei. Starten und aktivieren Sie dann diesen Dienst.
sudo systemctl start discourse sudo systemctl enable discourse
Überprüfen Sie den Status. Stellen Sie sicher, dass es ausgeführt wird.
sudo systemctl status discourse
Schritt 11:SMTP konfigurieren
Discourse muss E-Mails senden, damit Besucher ein Konto in Ihrem Forum registrieren und Benachrichtigungen erhalten können. Öffnen Sie zum Bearbeiten der SMTP-Einstellungen die discourse.conf
Datei.
nano /var/www/discourse/config/discourse.conf
Sie können die folgenden Zeilen finden, um den SMTP-Server zu konfigurieren. Normalerweise sollten Sie 587 als SMTP-Port verwenden.
# address of smtp server used to send emails smtp_address = # port of smtp server used to send emails smtp_port = 25 # domain passed to smtp server smtp_domain = # username for smtp server smtp_user_name = # password for smtp server smtp_password = # smtp authentication mechanism smtp_authentication = plain # enable TLS encryption for smtp connections smtp_enable_start_tls = true
Sie können auch Von: hinzufügen Adresse in dieser Datei wie unten.
# From: address notification_email = [email protected]
Wie Sie Ihren eigenen Mailserver einrichten, erfahren Sie im folgenden Tutorial. Hinweis dass ich dringend empfehle, den iRedMail-Mailserver auf einem frischen, sauberen Betriebssystem auszuführen. Die Installation von iRedMail auf einem Betriebssystem mit anderen Webanwendungen kann fehlschlagen und wahrscheinlich vorhandene Anwendungen beschädigen.
- So richten Sie mit iRedMail ganz einfach einen voll funktionsfähigen Mailserver unter Ubuntu 18.04 ein
Wenn Sie es vorziehen, einen SMTP-Relay-Dienst eines Drittanbieters zu verwenden, empfehle ich Sendinblue, mit dem Sie 9000 E-Mails pro Monat kostenlos versenden können.
Starten Sie nach dem Speichern der SMTP-Einstellungen den Discourse-Dienst neu.
sudo systemctl restart discourse discourse-sidekiq
Anschließend können Sie den E-Mail-Versand in Ihrem Discourse-Admin-Dashboard testen.
Sie können zu mail-tester.com gehen, wo Sie eine eindeutige E-Mail-Adresse erhalten. Senden Sie eine Test-E-Mail von Ihrem Diskurs an diese E-Mail-Adresse, um Ihre Absenderbewertung zu erfahren.
E-Mail kann nicht gesendet werden
Wenn Ihre Discourse-Instanz keine E-Mails sendet und Sie die folgende Meldung auf der Discourse-Webseite sehen,
All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent.
Sie müssen zu den Einstellungen gehen -> E-Mail (nicht E-Mails), stellen Sie E-Mails deaktivieren ein auf nein . Speichern Sie die Einstellung und starten Sie Discourse neu.
sudo systemctl restart discourse discourse-sidekiq
Wenn Ihr Diskurs immer noch keine E-Mails senden kann, prüfen Sie, ob er den Mailserver anpingen kann. Gehen Sie auch zu https://community.example.com/sidekiq/retries
, es zeigt Ihnen die fehlgeschlagenen E-Mails und warum der E-Mail-Versand fehlgeschlagen ist.
Manchmal der discourse-sidekiq.service
kann fehlschlagen und dazu führen, dass E-Mails nicht versendet werden, daher sollten Sie überprüfen, ob dieser Dienst ausgeführt wird
sudo systemctl status discourse-sidekiq
RAM-Nutzung optimieren
Die standardmäßige Puma-Konfiguration lässt Discourse viel RAM verwenden. Standardmäßig verwendet mein Diskurs 4 Worker, 8 minimale Threads, 32 maximale Threads. Wenn Ihr RAM nicht ausreicht, wird der Redis-Server gestoppt. Um die RAM-Nutzung zu reduzieren, können Sie die Anzahl der Worker und Threads in puma.rb
verringern Datei.
nano /var/www/discourse/config/puma.rb
Suchen Sie die folgenden zwei Zeilen.
workers "#{num_workers}" threads 8, 32
Sie können die Werte wie unten ändern, was Puma anweist, 2 Worker, 4 minimale Threads und 16 maximale Threads zu verwenden. Diese Einstellung eignet sich für Server mit nur 1 GB RAM.
workers 2 threads 4, 16
Speichern und schließen Sie die Datei. Starten Sie dann den Discourse-Dienst neu.
sudo systemctl restart discourse
Upgrade-Diskurs
Sie können den RSS-Feed von Discourse-Veröffentlichungen abonnieren, um über die neueste Version informiert zu bleiben. Vor dem Upgrade von Discourse empfehle ich dringend, ein manuelles Datenbank-Backup im Discourse-Admin-Dashboard durchzuführen und es auf Ihre Festplatte herunterzuladen.
Hinweis :Das Ein-Klick-Browser-Upgrade (https://community.yourdomain.com/admin/upgrade) funktioniert nicht, wenn Sie Discourse ohne Docker installiert haben. Sie müssen die nachstehenden Anweisungen befolgen.
Um Discourse zu aktualisieren, beenden Sie zuerst den Dienst.
sudo systemctl stop discourse
Wechseln Sie in das Installationsverzeichnis von Discourse.
cd /var/www/discourse/
Holen Sie sich neue Tags aus dem Github-Repository.
git fetch --tags
Bevor Sie sich die neueste stabile Version ansehen, empfehle ich, die Konfigurationsdatei in Ihrem Home-Verzeichnis zu sichern.
cp config/puma.rb ~ cp config/environments/production.rb ~ cp config/sidekiq.yml ~ cp config/discourse.conf ~
Löschen Sie dann die Datei Gemfile.lock.
rm Gemfile.lock
Und sehen Sie sich die neueste stabile Version an. Zum Beispiel
git checkout v2.3.4
Wenn Sie die folgende Fehlermeldung sehen.
Please commit your changes or stash them before you switch branches. Aborting
Führen Sie dann den folgenden Befehl
ausgit stash
Führen Sie dann den Befehl git checkout erneut aus.
Installieren Sie Abhängigkeiten für die neue Discourse-Version. Dieser Prozess könnte viel RAM verbrauchen.
RAILS_ENV=production /usr/local/bin/bundle install --path vendor/bundle/
Bearbeiten Sie die Datei assets.rake.
nano /var/www/discourse/lib/tasks/assets.rake
Suchen Sie die folgende Zeile (Zeile 273) und kommentieren Sie sie aus.
brotli(path, max_compress)
Speichern und schließen Sie die Datei. Führen Sie als Nächstes die folgenden Befehle aus, um die Produktion vorzubereiten.
RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rake assets:precompile
Dann können Sie überprüfen, ob die neue puma.rb
Konfigurationsdatei hat im Vergleich zur Originaldatei einige neue Zeilen hinzugefügt. Wenn es nichts Neues gibt, können Sie die Datei einfach durch die Originaldatei ersetzen.
mv ~/puma.rb /var/www/discourse/config/puma.rb mv ~/production.rb /var/www/discourse/config/environments/production.rb mv ~/sidekiq.yml /var/www/discourse/config/sidekiq.yml mv ~/discourse.conf /var/www/discourse/config/discourse.conf
Starten Sie schließlich den Diskurs.
sudo systemctl start discourse
Jetzt können Sie die Discourse-Version im Admin-Dashboard überprüfen.
Anpassung des Diskursthemas
Wenn Ihnen das weiße Standarddesign nicht gefällt, können Sie es über das Admin-Dashboard anpassen -> Anpassen -> Themen . Standardmäßig sind 3 Designs installiert.
- Blautöne
- Dunkel
- Licht
Ich habe das Thema „Shades of Blue“ ausgewählt. Sie können auch benutzerdefiniertes CSS hinzufügen, indem Sie auf CSS/HTML bearbeiten klicken Taste. Unten ist das CSS, das ich für meinen Diskurs hinzugefügt habe.
html { background-color:#ececec; } #main-outlet { background-color: #fff; padding-left: 20px; } .d-header { background-color:rgb(45, 45, 45); } a:visited { color: blueviolet; } a { color: blueviolet; }
So verschieben Sie Discourse auf einen neuen Server
Erstellen Sie zunächst eine Sicherungskopie Ihres ursprünglichen Discourse-Forums und laden Sie die tar.gz-Datei herunter. (Ändern Sie den Dateinamen nicht.)
Dann müssen Sie Discourse auf dem neuen Server installieren, indem Sie Schritt 1 bis Schritt 11 befolgen. Laden Sie als Nächstes die Sicherungsdatei nach /var/www/discourse/public/backups/default/
hoch Verzeichnis auf dem neuen Server.
Wechseln Sie auf dem neuen Server in das Verzeichnis /var/www/discourse/.
cd /var/www/discourse/
Abhängigkeiten installieren.
sudo gem install thor
Gehen Sie zum Admin-Dashboard von Discourse -> Einstellungen -> Sicherungen , kreuzen Sie Wiederherstellung zulassen an .
Führen Sie als Nächstes den folgenden Befehl aus, um die Site aus der Sicherung wiederherzustellen.
RAILS_ENV=production script/discourse restore file-name-of-the-backup-file.tar.gz
Sobald die Wiederherstellung abgeschlossen ist, starten Sie Discourse neu.
sudo systemctl restart discourse discourse-sidekiq
Aktualisieren Sie die Discourse-Webseite, und Ihr ursprüngliches Discourse-Forum wird wieder online angezeigt.
Wenn Sie den folgenden Fehler sehen,
You must use Bundler 2 or greater with this lockfile.
Dann müssen Sie Bundler aktualisieren.
gem install bundler
Aktualisieren Sie gemfile.lock
RAILS_ENV=production bundle update --bundler
Sie können auch die Datei Gemfile.lock entfernen, damit dieser Fehler nicht angezeigt wird.
So deinstallieren Sie Discourse
Entfernen Sie den PostgreSQL-Datenbankserver.
sudo apt remove postgresql
Entfernen Sie das Webroot-Verzeichnis.
sudo rm /var/www/discourse/ -rf
Entfernen Sie die Nginx-Konfigurationsdatei.
sudo rm /etc/nginx/conf.d/discourse.conf
Entfernen Sie das SSL-Zertifikat von Let’s Encrypt.
sudo certbot revoke --cert-name community.example.com
Entfernen Sie den SystemD-Dienst.
sudo rm /etc/systemd/system/discourse.service sudo rm /etc/systemd/system/discourse-sidekiq.service
Überwachung des Zustands Ihrer Diskursinstanz
Sie sollten das Diskursfehlerprotokoll im Auge behalten, das Sie über das Admin-Dashboard finden -> Protokolle -> Fehlerprotokolle . Wenn Ihr Server viel Datenverkehr hat, benötigen Sie möglicherweise mehr RAM, um Discourse auszuführen. Das folgende Protokoll zeigt, dass mein Server nicht genügend Arbeitsspeicher hatte.
Wie man mit schwierigen Benutzern im Diskurs umgeht
Wenn es einen bestimmten Benutzer in Ihrem Discourse-Forum gibt, der Ihnen das Leben schwer macht, können Sie diesen Benutzer auf den 0: new user
sperren Vertrauensstufe, und gehen Sie dann zu Discourse Admin
-> Settings
-> Posting
und erfordert Beiträge/Themen, die von 0: new user
erstellt wurden genehmigt werden, bevor sie veröffentlicht werden können.
Schlussfolgerung
Ich hoffe, dieser Artikel hat Ihnen geholfen, die Discourse-Forum-Software auf Ubuntu 18.04 zu installieren, ohne Docker zu verwenden. Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter, um weitere Tipps und Tricks zu erhalten. Pass auf dich auf 🙂