Wie man Discourse Forum mit Nginx auf Rocky Linux 9 installiert

Discourse ist eine Open-Source-Community-Diskussionsplattform, die auf der Sprache Ruby basiert. Sie kann als Forum, Chat-Software oder Mailingliste genutzt werden. Sie lässt sich leicht mit anderen Plattformen integrieren und kann über Plugins erweitert werden.

In diesem Lernprogramm lernst du, wie du Discourse Forum mit dem Nginx-Server auf einem Server mit Rocky Linux 9 installierst.

Voraussetzungen

  • Ein Server mit Rocky Linux 9 mit mindestens 1 GB RAM und 1 Core CPU. Das Discourse Setup erstellt automatisch eine Swap-Partition auf Systemen mit 1 GB oder weniger RAM. Daher wird empfohlen, ihn auf einem System mit mindestens 2 GB RAM zu installieren.
  • Ein Nicht-Root-Benutzer mit sudo Rechten.
  • Einen Domainnamen (discourse.example.com), der auf den Server zeigt.
  • Alles ist auf dem neuesten Stand.
    $ sudo dnf update
    
  • Einige wenige Pakete, die dein System benötigt.
    $ sudo dnf install wget curl nano unzip yum-utils -y
    

    Einige dieser Pakete sind vielleicht schon auf deinem System installiert.

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux verwendet die Firewalld Firewall. Überprüfe den Status der Firewall.

$ sudo firewall-cmd --state
running

Die Firewall arbeitet mit verschiedenen Zonen, wobei die öffentliche Zone die Standardzone ist, die wir verwenden werden. Liste alle Dienste und Ports auf, die auf der Firewall aktiv sind.

$ sudo firewall-cmd --permanent --list-services

Es sollte die folgende Ausgabe angezeigt werden.

cockpit dhcpv6-client ssh

Discourse braucht HTTP- und HTTPS-Ports, um zu funktionieren. Öffne sie.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Füge Masquerade hinzu, da die Anwendung andere Instanzen kontaktieren wird.

$ sudo firewall-cmd --permanent --add-masquerade

Lade die Firewall neu, um die Änderungen zu übernehmen.

$ sudo firewall-cmd --reload

Liste alle Dienste erneut auf.

$ sudo firewall-cmd --permanent --list-services

Du solltest die folgende Ausgabe erhalten.

cockpit dhcpv6-client http https ssh

SELinux konfigurieren

Discourse ist aufgrund der SELinux-Zugriffsrichtlinien nicht erreichbar, auch wenn du die Ports öffnest. Konfiguriere SELinux so, dass es Netzwerkverbindungen zulässt.

$ sudo setsebool -P httpd_can_network_connect 1

Schritt 2 – Git installieren

Installiere Git.

$ sudo dnf install git

Bestätige die Installation.

$ git --version
git version 2.31.1

Führe die folgenden Befehle aus, um die Git-Installation zu konfigurieren.

$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@example.com"

Schritt 3 – Installiere Docker

Rocky Linux wird mit einer älteren Version von Docker ausgeliefert. Um die neueste Version zu installieren, musst du zuerst das offizielle Docker-Repository installieren.

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Installiere die neueste Version von Docker.

$ sudo dnf install docker-ce docker-ce-cli containerd.io

Möglicherweise bekommst du die folgende Fehlermeldung, wenn du versuchst, Docker zu installieren.

ror: 
 Problem: problem with installed package buildah-1:1.26.2-1.el9_0.x86_64
  - package buildah-1:1.26.2-1.el9_0.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
  - package containerd.io-1.6.9-3.1.el9.x86_64 conflicts with runc provided by runc-4:1.1.3-2.el9_0.x86_64
  - package containerd.io-1.6.9-3.1.el9.x86_64 obsoletes runc provided by runc-4:1.1.3-2.el9_0.x86_64
  - cannot install the best candidate for the job

Verwende den folgenden Befehl, wenn du die obige Fehlermeldung erhältst.

$ sudo dnf install docker-ce docker-ce-cli containerd.io --allowerasing

Aktiviere den Docker-Daemon und starte ihn.

$ sudo systemctl enable docker --now

Überprüfe, ob er läuft.

? docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2023-01-20 06:49:44 UTC; 6s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 99263 (dockerd)
      Tasks: 8
     Memory: 28.1M
        CPU: 210ms
     CGroup: /system.slice/docker.service
             ??99263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Docker benötigt standardmäßig Root-Rechte. Wenn du vermeiden willst, dass du jedes Mal sudo verwendest, wenn du den Befehl docker ausführst, füge deinen Benutzernamen der Gruppe docker hinzu.

$ sudo usermod -aG docker $(whoami)

Um diese Änderung zu aktivieren, musst du dich vom Server abmelden und als derselbe Benutzer wieder anmelden oder den folgenden Befehl verwenden.

$ su - ${USER}

Bestätige, dass dein Benutzer der Docker-Gruppe hinzugefügt wurde.

$ groups
navjot wheel docker

Schritt 4 – Discourse herunterladen

Klone das offizielle Discourse Docker GitHub Repository in das Verzeichnis /var/discourse.

$ sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse

Wechsle in das Discourse-Verzeichnis.

$ cd /var/discourse

Entferne Schreib- und Ausführungsrechte aus dem Verzeichnis containers.

$ sudo chmod 700 containers

Schritt 5 – Discourse konfigurieren

Erstelle die Konfigurationsdatei app.yml, indem du die Beispieldatei standalone.yml kopierst.

$ sudo cp samples/standalone.yml containers/app.yml

Öffne die app.yml zur Bearbeitung.

$ sudo nano containers/app.yml

Domain setzen

Setze die Variable DISCOURSE_HOSTNAME auf den Domainnamen, den du für dein Forum gewählt hast. Wenn du keinen Domainnamen hast, kannst du hier auch eine IP-Adresse angeben.

DISCOURSE_HOSTNAME: 'discourse.example.com'

Exponierte Ports konfigurieren

Ändere die Zeile "80:80 in "8080:80". Dadurch wird der externe HTTP-Port für Discourse auf 8080 geändert, da wir Nginx auf Port 80 verwenden werden. Kommentiere die Zeile "443:443" aus, da wir SSL extern installieren werden.

expose:
  - "8080:80"   # http
  #- "443:443" # https

Konfiguriere die E-Mail-IDs für den Administrator

Lege die E-Mail für deinen Administrator-Account und den Entwickler über die Variable DISCOURSE_DEVELOPER_EMAILS fest. Dieser Schritt ist obligatorisch, da dein Forum sonst nicht hochgefahren werden kann.

DISCOURSE_DEVELOPER_EMAILS: 'navjot@example.com,developer@example.com'

SMTP-Einstellungen konfigurieren

Fülle die folgenden Variablen aus, je nachdem, welchen Transaktions-E-Mail-Dienst du verwendest.

DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: user@example.com
DISCOURSE_SMTP_PASSWORD: your_smtp_password
#DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
DISCOURSE_SMTP_DOMAIN: discourse.example.com    # (required by some providers)
DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com    # (address to send notifications from)

Speichereinstellungen (optional)

Wenn dein Server über wenig Arbeitsspeicher verfügt, kannst du die folgenden Variablen entsprechend konfigurieren, um den Speicherbedarf von Discourse zu verringern.

db_shared_buffers: '128MB'
UNICORN_WORKERS: 2

Die Variable db_shared_buffers ist normalerweise auf 25% des verfügbaren Speichers eingestellt.

GeoLite2-Einstellungen (Optional)

Wenn du die IP-Lookup-Funktion in Discourse nutzen willst, melde dich für den kostenlosen Maxmind Geolite2 Account an und erhalte einen Lizenzschlüssel. Füge diesen Lizenzschlüssel als Wert in die folgende Variable ein.

DISCOURSE_MAXMIND_LICENSE_KEY: your_maxmind_license_key

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Schritt 6 – Installiere Discourse

Führe den folgenden Befehl aus, um deinen Discourse-Container zu booten.

$ sudo ./launcher bootstrap app

Starte die Discourse-Anwendung.

$ sudo ./launcher start app

Öffne den Port, um die Discourse-Anwendung zu testen.

$ sudo firewall-cmd --permanent --add-port=8080/tcp

Du kannst jetzt auf das Forum zugreifen, indem du die URLs http://yourserver_IP:8080 oder http://discourse.example.com:8080 in deinem Browser aufrufst. Du wirst den folgenden Bildschirm erhalten.

Discourse Setup Home

Schritt 7 – Nginx installieren

Rocky Linux 9 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.

Erstelle und öffne die Datei /etc/yum.repos.d/nginx.repo zur Erstellung des offiziellen Nginx-Repositorys.

$ sudo nano /etc/yum.repos.d/nginx.repo

Füge den folgenden Code in die Datei ein.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Installiere den Nginx-Server.

$ sudo dnf install nginx

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.22.1

Aktiviere und starte den Nginx-Server.

$ sudo systemctl enable nginx --now

Überprüfe den Status des Servers.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
     Active: active (running) since Sun 2023-01-20 07:49:55 UTC; 1s ago
       Docs: http://nginx.org/en/docs/
    Process: 230797 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 230798 (nginx)
      Tasks: 3 (limit: 12355)
     Memory: 2.8M
        CPU: 13ms
     CGroup: /system.slice/nginx.service
             ??230798 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??230799 "nginx: worker process"
             ??230800 "nginx: worker process"

Schritt 8 – SSL installieren

Um ein SSL-Zertifikat mit Let’s Encrypt zu installieren, müssen wir das Tool Certbot installieren.

Dazu verwenden wir den Snapd-Paketinstaller. Da Rocky Linux nicht mit diesem Paket ausgeliefert wird, installierst du den Snapd-Installer. Er benötigt das EPEL-Repository, um zu funktionieren.

$ sudo dnf install epel-release

Installiere Snapd.

$ sudo dnf install snapd

Aktiviere und starte den Snap-Dienst.

$ sudo systemctl enable snapd --now

Installiere das Snap-Kernpaket und stelle sicher, dass deine Snapd-Version auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Erstelle die notwendigen Links, damit Snapd funktioniert.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Gib den folgenden Befehl ein, um Certbot zu installieren.

$ sudo snap install --classic certbot

Stelle mit folgendem Befehl sicher, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link auf das Verzeichnis /usr/bin erstellst.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Überprüfe die Installation.

$ certbot --version
certbot 1.32.2

Erstelle das SSL-Zertifikat.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d discourse.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/discourse.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führe einen Probelauf durch.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, ist alles in Ordnung. Dein Zertifikat wird automatisch erneuert.

Schritt 9 – Nginx konfigurieren

Erstelle und öffne die Datei /etc/nginx/conf.d/discourse.conf zum Bearbeiten.

$ sudo nano /etc/nginx/conf.d/discourse.conf

Füge den folgenden Code in die Datei ein.

# enforce HTTPS
server {
    listen       80; 
    listen 		[::]:80;
    server_name  discourse.example.com;
    location / { return 301 https://$host$request_uri; }
}
server {
    listen       443 ssl http2;
    listen 		[::]:443 ssl http2;
    server_name  discourse.example.com;

    access_log  /var/log/nginx/discourse.access.log;
    error_log   /var/log/nginx/discourse.error.log;
    
    # SSL
    ssl_certificate         /etc/letsencrypt/live/discourse.example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/discourse.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/discourse.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;
    
    http2_push_preload on; # Enable HTTP/2 Server Push
    # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
    # prevent replay attacks.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;
    
    # Security / XSS Mitigation Headers
    # NOTE: X-Frame-Options may cause issues with the webOS app
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
    add_header X-Early-Data $tls1_3_early_data;
    
    client_max_body_size 100m;
    
    location / {
        proxy_pass http://discourse.example.com:8080/;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }    
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
    "~." $ssl_early_data;
    default "";
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Öffne die Datei /etc/nginx/nginx.conf und bearbeite sie.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size  64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe die Syntax der Nginx-Konfigurationsdatei.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte den Nginx-Dienst neu, um die neue Konfiguration zu aktivieren.

$ sudo systemctl restart nginx

Schritt 10 – Zugriff und Abschluss der Discourse-Installation

Du kannst auf das Forum zugreifen, indem du die URL https://discourse.example.com in deinem Browser aufrufst. Du erhältst den folgenden Bildschirm.

Discourse Setup Home

Klicke auf die Schaltfläche Registrieren, um fortzufahren. Die E-Mail-ID, die du in der Datei app.yml angegeben hast, wird für dich vorausgefüllt.

Discourse Admin-Konto erstellen

Klicke auf die Schaltfläche “ Registrieren „, um das Administratorkonto zu registrieren. Du gelangst zum E-Mail-Bestätigungsbildschirm.

Diskurs E-Mail bestätigen

Wenn deine SMTP-Einstellungen korrekt sind, erhältst du eine E-Mail zur Aktivierung des Kontos. Klicke auf den Link in deiner E-Mail, um die Einrichtung des Kontos abzuschließen.

Diskurs-Bestätigungs-E-Mail

Klicke auf die Schaltfläche Aktivieren, um die Installation abzuschließen.

Diskurs-Konto Aktivieren

Du gelangst zum Bildschirm des Einrichtungsassistenten von Discourse. Gib den Namen und die Beschreibung deines Forums ein und wähle die Sprache. Klicke auf die Schaltfläche Weiter, um fortzufahren.

Discourse Setup-Assistent

Als Nächstes wirst du auf die Seite Mitgliedererfahrung weitergeleitet. Wähle die Optionen, die deinen Anforderungen entsprechen, und klicke auf die Schaltfläche Weiter, um fortzufahren.

Discourse Member Experience Setup

Als Nächstes wirst du auf die Seite zum Abschluss der Einrichtung weitergeleitet. Du kannst entweder weitere Einstellungen vornehmen oder einfach loslegen und das Forum nutzen. Diese Einstellungen können immer noch über die Administratoreinstellungen konfiguriert werden.

Discourse Website bereit

Für unser Tutorial wählen wir “ Mehr konfigurieren „. Du wirst nun aufgefordert, Logos und Banner für dein Forum festzulegen. Klicke auf die Schaltfläche Weiter, um fortzufahren.

Discourse Logo konfigurieren

Als Nächstes wirst du aufgefordert, grundlegende Stylingoptionen für das Frontend des Forums festzulegen. Klicke auf die Schaltfläche Weiter, um fortzufahren.

Discourse Look and Feel konfigurieren

Als Nächstes wirst du auf die Seite zur Konfiguration der Organisation weitergeleitet. Fülle die entsprechenden Informationen aus.

Aufbau der Diskursorganisation

Klicke auf die Schaltfläche “ Jump in! „, um fortzufahren. Du wirst zur Startseite des Forums weitergeleitet. Dein Discourse-Forum ist jetzt einsatzbereit.

Diskurs Homepage

Schritt 11 – Discourse-Befehle

Aktiviere den Discourse Administrator über die Kommandozeile

Wenn du die Aktivierungs-E-Mail nicht erhältst, kannst du den Administrator-Account auch über die Kommandozeile aktivieren.

Wechsle in das Discourse-Verzeichnis.

$ cd /var/discourse

Rufe die Discourse-Container-Shell auf.

$ sudo ./launcher enter app

Gib den Befehl rails c ein, um die Rails-Eingabeaufforderung aufzurufen.

root@discourse-app:/var/www/discourse# rails c

Du wirst die folgende Eingabeaufforderung sehen.

[1] pry(main)> 

Gib den Befehl ein, um das Administratorkonto zu finden.

[1] pry(main)>  User.find_by_email("name@example.com")
=> #<User:0x00007fdf020229f0
 id: 1,
 username: "username",
 created_at: Fri, 20 Jan 2023 08:14:36.735552000 UTC +00:00,
 updated_at: Fri, 20 Jan 2023 14:14:12.094234000 UTC +00:00,
 name: nil,
 seen_notification_id: 4,
 last_posted_at: nil,
 password_hash: "98c774785bda45b4edbaea90eeb3bd5da00f65487ba6d0b3930082ce098bf174",
 salt: "ca175ea7f5653ce8122b76b68b549936",
 active: true,
 username_lower: "username",
 last_seen_at: Fri, 20 Jan 2023 23:01:21.001705000 UTC +00:00,
 admin: true,
 last_emailed_at: Fri, 20 Jan 2023 09:48:47.896200000 UTC +00:00,
 trust_level: 1,
 approved: false,
 approved_by_id: nil,
 approved_at: nil,
 previous_visit_at: Fri, 20 Jan 2023 21:28:23.665502000 UTC +00:00,
 suspended_at: nil,
 suspended_till: nil,
 date_of_birth: nil,
 views: 0,
 flag_level: 0,
 ip_address: #<IPAddr: IPv4:122.161.92.70/255.255.255.255>,
 moderator: false,
 title: nil,
 uploaded_avatar_id: nil,
 :

Gib q ein, um zur Eingabeaufforderung zurückzukehren und gib die folgenden Befehle nacheinander ein.

[2] pry(main)> user.approved = true
[3] pry(main)> user.save
[4] pry(main)> EmailToken.confirm(user.email_tokens.first.token)

Gib zweimal exit ein, um zur Shell zurückzukehren. Dein Administratorkonto ist nun aktiviert und einsatzbereit.

Discourse sichern

Discourse erstellt standardmäßig alle 7 Tage eine Sicherungskopie der Datenbank. Du findest die Sicherungsdateien im Verzeichnis `/var/discourse/shared/standalone/backups/default.

$ ls /var/discourse/shared/standalone/backups/default -al
total 1480
drwxr-xr-x. 2 navjot tape    4096 Jan 21 03:34 .
drwxr-xr-x. 3 navjot tape    4096 Jan 20 12:01 ..
-rw-r--r--. 1 navjot tape 1503748 Jan 21 03:34 howtoforge-forums-2023-01-21-033439-v20230119094939.tar.gz

Du kannst die Backup-Einstellungen im Bereich Admin >> Einstellungen >> Backups konfigurieren. Discourse bietet dir die Möglichkeit, die Backups lokal oder in einem Amazon S3-ähnlichen Cloud-Speicher zu speichern.

Discourse Backups Einstellungen

Du kannst die Backups von der Seite Admin >> Backups herunterladen. Die Wiederherstellung ist standardmäßig deaktiviert. Wenn du die Datenbank wiederherstellen möchtest, musst du die Option Wiederherstellung zulassen im Bereich Admin >> Einstellungen >> Backups aktivieren.

Discourse Backups Seite

Discourse aktualisieren

Um das Forum zu aktualisieren, kannst du eine von zwei Möglichkeiten nutzen. Die erste Möglichkeit ist, es über das Administrator-Dashboard zu aktualisieren. Die zweite Methode ist die Verwendung einer Kommandozeile.

Wechsle in das Discourse-Verzeichnis.

$ cd /var/discourse

Aktualisiere die Discourse-Installation, indem du dir die neuesten Dateien von GitHub holst.

$ git pull

Erstelle Discourse neu.

$ sudo ./launcher rebuild app

Jedes Mal, wenn du Änderungen an der Datei app.yml vornimmst, musst du Discourse neu erstellen. Nachdem du die Änderungen vorgenommen hast, führe den obigen Befehl aus. Er zerstört den alten Container, bootet einen neuen und startet ihn.

Discourse stoppen

$ sudo ./launcher stop app

Discourse Logs ansehen

$ sudo ./launcher logs app

Du kannst dir die detaillierten Labs auch ansehen, indem du die URL https://discourse.example.com/logs/ in deinem Browser aufrufst. Du erhältst dann einen ähnlichen Bildschirm.

Diskurs Logs Seite

Rails / Unicorn Logs

Ruby on Rails enthält ein sehr ausführliches Log, das auf die Festplatte geschrieben wird. Außerdem protokolliert der Webserver Unicorn ebenfalls auf der Festplatte. Du kannst sie im Verzeichnis var/discourse/shared/standalone/log/rails einsehen.

$ ls /var/discourse/shared/standalone/log/rails -al
total 552
drwxr-xr-x. 2 navjot tape   4096 Jan 20 07:09 .
drwxr-xr-x. 4 root   root   4096 Jan 20 07:09 ..
-rw-r--r--. 1 navjot tape      0 Jan 20 07:09 production_errors.log
-rw-r--r--. 1 navjot tape 361031 Jan 21 11:46 production.log
-rw-r--r--. 1 navjot tape      0 Jan 20 07:09 sidekiq.log
-rw-r--r--. 1 navjot tape  60919 Jan 20 08:42 unicorn.stderr.log
-rw-r--r--. 1 navjot tape 119403 Jan 21 03:34 unicorn.stdout.log

Nginx-Protokolle

Discourse betreibt einen Nginx-Server in einem Docker-Container. Du kannst die Logs an folgendem Ort einsehen.

$ ls /var/discourse/shared/standalone/log/var-log/nginx -al
total 1852
drwxr-xr-x. 2   33 tape    4096 Jan 20 07:39 .
drwxrwxr-x. 5 root adm     4096 Jan 21 08:04 ..
-rw-r--r--. 1   33 tape 1878744 Jan 21 12:18 access.log
-rw-r--r--. 1   33 tape    1017 Jan 20 07:45 error.log

Redis-Logs

Du kannst die Logs für den Redis-Datenbankserver unter folgendem Link abrufen. Die neuesten Log-Einträge findest du in der Datei current.

$ ls /var/discourse/shared/standalone/log/var-log/redis -al
total 140
drwxr-xr-x. 2 root root   4096 Jan 20 07:39 .
drwxrwxr-x. 5 root adm    4096 Jan 21 08:04 ..
-rw-r--r--. 1 root root 127002 Jan 21 12:17 current
-rw-------. 1 root root      0 Jan 20 07:39 lock

PostgreSQL-Protokolle

Du kannst die Logs der PostgreSQL-Datenbank an folgendem Ort abrufen.

ls /var/discourse/shared/standalone/log/var-log/postgres -al
total 20
drwxr-xr-x. 2 root root  4096 Jan 20 07:39 .
drwxrwxr-x. 5 root adm   4096 Jan 21 08:04 ..
-rw-r--r--. 1 root root 11400 Jan 21 03:34 current
-rw-------. 1 root root     0 Jan 20 07:39 lock

Die aktuellsten Einträge befinden sich in der Datei current in diesem Verzeichnis.

Die restlichen Einträge findest du in der Datei /var/discourse/shared/standalone/log/var-log selbst.

ls /var/discourse/shared/standalone/log/var-log -al
total 100
drwxrwxr-x. 5 root adm   4096 Jan 21 08:04 .
drwxr-xr-x. 4 root root  4096 Jan 20 07:09 ..
-rw-r--r--. 1 root adm  40943 Jan 21 12:17 auth.log
-rw-r--r--. 1 root adm      0 Jan 20 08:41 kern.log
-rw-r-----. 1 root adm    750 Jan 21 08:04 messages
drwxr-xr-x. 2   33 tape  4096 Jan 20 07:39 nginx
drwxr-xr-x. 2 root root  4096 Jan 20 07:39 postgres
drwxr-xr-x. 2 root root  4096 Jan 20 07:39 redis
-rw-r--r--. 1 root adm  23041 Jan 21 12:17 syslog
-rw-r-----. 1 root adm     70 Jan 21 08:04 user.log

Fazit

Damit ist der Lehrgang abgeschlossen. Du hast das Discourse Forum mit Docker hinter dem Nginx Proxy Webserver auf einem Rocky Linux 9 Server installiert. Wenn du noch Fragen hast, schreibe sie in die Kommentare unten.

Das könnte dich auch interessieren …