GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Installieren Sie die Discourse Forum-Software auf Ubuntu 18.04 ohne Docker

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

aus
sudo 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

aus
ruby -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

aus
git 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 🙂


Ubuntu
  1. So installieren Sie Discourse unter Ubuntu 20.04 LTS

  2. 18.04 Server ohne Netzwerkverbindung installieren?

  3. Wie installiere ich Ubuntu Server ohne Netzwerkverbindung?

  4. So installieren Sie Discourse unter Ubuntu 20.04

  5. So installieren Sie einen PostgreSQL-Server unter Ubuntu 18.04

Installieren Sie Mailtrain v1.24 auf Ubuntu 20.04 Server ohne Docker

So installieren Sie VNC Server unter Ubuntu 14.04+

Installieren Sie SonarQube auf dem Ubuntu 20.04 LTS-Server

So installieren Sie die Software Flarum Forum unter Ubuntu 22.04 | 20.04

So installieren Sie das phpBB-Forum unter Ubuntu 22.04 | 20.04 Server

So installieren Sie das Discourse Forum unter Ubuntu 14.04