Wie installiert man das Discourse mit Nginx auf CentOS 7

Discourse ist eine freie und quelloffene Software zur Erstellung einer Internet-Forum-Community und Mailingliste. Sie wurde 2013 erstellt und mit den Programmiersprachen Ruby und Javascript geschrieben. Discourse-Forum-Software wurde von vielen Organisationen verwendet, darunter Codeacademy, Udacity, Twitter-Entwickler, Docker-Community-Forum usw.

In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie Discourse Forum mit Nginx Webserver unter dem CentOS 7 Server installieren und konfigurieren. Insbesondere werden wir Ihnen zeigen, wie Sie die Discourse Software installieren, Nginx als Reverse-Proxy für Discourse konfigurieren und Discourse-Software mit kostenlosem SSL von Letsencrypt sichern.

Was wir tun werden

  1. Docker unter CentOS 7 installieren
  2. Installieren und Konfigurieren von Software für Discourse
  3. SSL Letsencrypt auf CentOS 7 erzeugen
  4. Installieren und Konfigurieren von Nginx als Reverse Proxy für Discourse
  5. Discourse Web-Installer
  6. Discourse Zusätzliche Konfiguration

Voraussetzungen

  • CentOS 7
  • Root-Privilegien
  • SMTP-Konto – z.B. von Mailgun, SendGrid oder Mailjet

Schritt 1 – Installieren Sie Docker unter CentOS 7

Das Diskursforum wird unter Docker-Container installiert. Der erste Schritt ist also die Installation von Docker auf unserem CentOS 7-Server.

Installieren Sie Docker unter CentOS 7 mit dem folgenden Befehl.

wget -qO- https://get.docker.com/ | sh

Falls Sie den Befehl wget nicht haben, installieren Sie ihn aus dem Repository.

yum -y install wget

Wenn die Installation abgeschlossen ist, starten Sie den Docker-Dienst und aktivieren Sie ihn beim Booten mit den folgenden systemctl-Befehlen.

systemctl start docker
systemctl enable docker

Die Docker-Engine wurde installiert und läuft auf dem CentOS 7-Server. Überprüfen Sie den Dienststatus mit dem folgenden Befehl.

systemctl status docker

Der Docker-Dienst ist aktiv und läuft.

Docker-Dienst läuft

Schritt 2 – Installieren und Konfigurieren der Discourse Software

In diesem Schritt werden wir die Discourse-Software installieren und konfigurieren. Wir werden das Skript discourse docker-compose herunterladen, es nach Bedarf konfigurieren und dann einen neuen Docker-Container für die Software des Diskursforums erstellen.

Vor dem Herunterladen des Diskurses müssen wir den Befehl git auf dem Server installieren.

yum -y install git

Erstellen Sie nun ein neues Verzeichnis ‚/var/discourse‘ und laden/klonen Sie das Diskurs-Docker-Skript mit dem git-Befehl herunter.

mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse

Gehen Sie in das Diskurs-Verzeichnis und kopieren Sie ein Beispiel des Docker-Composition-Skripts ’standalone.yml‘ in das Verzeichnis ‚/var/discourse/containers/‘ mit dem Namen ‚app.yml‘.

cd /var/discourse
cp samples/standalone.yml containers/app.yml

Klon-Diskurs-Andockstation

Nun editieren Sie die Datei ‚app.yml‘ mit vim.

vim containers/app.yml

– Docker-Port-Zuordnung

Standardmäßig werden alle HTTP- und HTTPS-Anfragen durch den Docker-Proxy bearbeitet. Und für diesen Leitfaden werden wir zu diesem Zweck Nginx verwenden – alle HTTP- und HTTPS-Anforderungen werden vom Nginx-Webserver verarbeitet.

Wir müssen also die Konfiguration der Docker-Portzuordnung ändern. Der Discourse-Container wird nur die HTTP-Verbindung haben, und der Host wird den neuen Port ‚2045‘ öffnen und auf den Container-Port 80 mappen.

Entkommentieren Sie die HTTPS-Zeile und ändern Sie die HTTP-Zeile mit dem neuen Port ‚2045‘, wie unten gezeigt.

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

– Konfiguration des Diskurs-Domänennamens

Geben Sie Ihren eigenen Domänennamen für den installierten Diskurs in die Zeile ‚DISCOURSE_HOSTNAME‘ wie unten beschrieben ein.

DISCOURSE_HOSTNAME: 'discourse.hakase-labs.co'

Und geben Sie Ihre E-Mail-Adresse in die Zeile ‚DISCOURSE_DEVELOPER_EMAIL‘ ein.

DISCOURSE_DEVELOPER_EMAILS: '[email protected]'

– SMTP-Konfiguration

Die SMTP-Konfiguration ist die wichtigste Konfiguration für Discourse Software. Stellen Sie sicher, dass Sie das SMTP-Konto für die Discourse-Installation haben – Sie können ein Free-Tier-SMTP-Konto von Mailgun, Mailjet oder SendGrid kaufen oder ausprobieren.

Für dieses Tutorial verwenden wir das Free-Tier-SMTP-Konto von Mailgun. Registrieren Sie sich bei Mailgun und konfigurieren Sie Ihren Domainnamen, und stellen Sie sicher, dass Sie die Details Ihres SMTP-Kontos erhalten.

Dann kommentieren Sie die SMTP-Konfiguration aus und geben Sie Ihre Kontodaten wie unten beschrieben ein.

  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
   DISCOURSE_SMTP_PORT: 587
   DISCOURSE_SMTP_USER_NAME: [email protected]
   DISCOURSE_SMTP_PASSWORD: mypassword

Das war’s schon. Speichern Sie die Änderungen und verlassen Sie den Editor.

Erstellen Sie als nächstes ein neues Diskurs-Andock-Image auf der Basis der app.yml-Vorlagenkonfiguration.

sudo ./launcher bootstrap app

Diskurs einleiten

Wenn alles vollständig ist, starten/initialisieren Sie den neuen Diskurs-Container mit dem folgenden Befehl.

sudo ./launcher start app

neuen Diskurs-Container initialisieren

Und der Discourse Docker-Container ist einsatzbereit – überprüfen Sie ihn mit dem Befehl ‚docker ps‘.

docker ps -a

Überprüfen Sie den offenen Port des Hosts mit netstat und stellen Sie sicher, dass der neue Service-Docker-Proxy mit Port 2045 auf der Liste steht.

netstat -plntu

Prüfen Sie, ob der Diskurs läuft

Die Diskursforum-Software wurde unter Docker-Container auf dem Host CentOS 7 installiert.

Schritt 3 – SSL Letsencrypt auf CentOS 7 erzeugen

Für dieses Tutorial werden wir das Diskursforum unter dem Nginx-Webserver betreiben und nur die HTTPS-Verbindung akzeptieren. Zu diesem Zweck benötigen wir neue SSL-Zertifikate für den Domainnamen, und daher werden wir ein kostenloses SSL-Zertifikat von Letsencrypt verwenden.

Installieren Sie das Letsencrypt-Befehlszeilen-Tool mit dem yum-Befehl wie folgt.

yum -y install letsencrypt

Nach der Installation fügen Sie der Firewalld-Konfiguration neue HTTP- und HTTPS-Dienste hinzu.

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Generieren Lässt SSL-Zertifikat verschlüsseln

Generieren Sie nun neue SSL-Zertifikate für das Diskursforum mit dem untenstehenden Befehl letsencrypt.

letsencrypt certonly

Sie werden zwei Verifizierungen von Letsencrypt sehen. Geben Sie die Nummer ‚1‘ ein, um einen temporären Webserver zur Authentifizierung hochzufahren.

Als Teil davon geben Sie Ihre E-Mail-Adresse für die Erneuerungsbenachrichtigung ein, geben Sie ‚A‘ ein, um den letencrypt TOS (Terms of Service) zuzustimmen.

Geben Sie nun den Diskurs-Domänennamen ‚discourse.hakase-labs.co‘ ein.

letsencrypt certonly-Befehl

Und wenn der Prozess abgeschlossen ist, erhalten Sie das Ergebnis wie unten dargestellt.

SSL-Zertifikat wurde erstellt

Ein neues SSL-Zertifikat von letsencrypt wurde im Verzeichnis ‚/etc/letsencrypt/live‘ generiert.

Schritt 4 – Installieren und Konfigurieren von Nginx als Reverse Proxy für Discourse

In diesem Tutorial werden wir den Nginx-Webserver als Reverse-Proxy für Discourse verwenden, der unter dem Docker-Container läuft. Der Nginx-Webserver läuft unter HTTP- und HTTPS-Port, und alle Client-Anfragen werden von Nginx bearbeitet.

Bevor wir den Nginx-Webserver installieren, müssen wir das EPEL-Repository auf dem System installieren.

yum -y install epel-release

Installieren Sie nun nginx aus dem EPEL-Repository mit dem folgenden yum-Befehl.

yum -y install nginx

Nachdem die gesamte Installation abgeschlossen ist, gehen Sie in das nginx-Konfigurationsverzeichnis ‚/etc/nginx‘.

cd /etc/nginx/

Und erstellen Sie eine neue zusätzliche SSL-Konfiguration ’ssl.conf‘ mit vim.

vim ssl.conf
Fügen Sie dort die folgende SSL-Konfiguration ein.
ssl_session_timeout 1d;
 ssl_session_cache shared:SSL:50m;
 ssl_session_tickets off;

ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;

add_header Strict-Transport-Security „max-age=15768000; includeSubdomains; preload“;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Speichern Sie die Änderungen und verlassen Sie den Editor.

Als nächstes erstellen Sie eine neue nginx-Datei ‚discourse.conf‘ für den Diskurs.

vim conf.d/discourse.conf

Fügen Sie dort die folgende Konfiguration ein.

server {
     listen 80; listen [::]:80;
     server_name discourse.hakase-labs.co;
  
     # Automatic Redirect HTTP to HTTPS Nginx
     return 301 https://$host$request_uri;
 }
  
 server {
     listen 443 ssl http2;  
     server_name discourse.hakase-labs.co;
# SSL Configuration
ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.co/privkey.pem;
include /etc/nginx/ssl.conf;

# Reverse Proxy Configuration
location / {
proxy_pass http://discourse.hakase-labs.co:2045/;
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_redirect http://discourse.hakase-labs.co:2045/ https://discourse.hakase-labs.co;
}
}

Speichern und beenden.

Testen Sie nun die nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt. Starten Sie dann den Nginx-Dienst neu.

nginx -t
systemctl restart nginx

nginx-Konfiguration testen und nginx neu starten

Die Installation und Konfiguration von Nginx als Reverse-Proxy für den Discourse-Container ist abgeschlossen.

Schritt 5 – Diskurs-Web-Installer

Öffnen Sie Ihren Webbrowser und besuchen Sie Ihre Diskurs-URL, meine ist es:

http://discourse.hakase-labs.co

Und Sie werden auf die HTTPS-Verbindung umgeleitet.

Diskurs-Web-Installationsprogramm

Klicken Sie auf die Schaltfläche „Registrieren„.

Jetzt müssen wir ein neues ‚Administrator‘-Konto erstellen.

Admin-Konto registrieren

Geben Sie Ihren Administrator-Benutzernamen und Ihr Passwort ein und klicken Sie dann auf ‚Registrieren‚.

Und Sie erhalten die Seite zur E-Mail-Bestätigung. Überprüfen Sie Ihren E-Mail-Posteingang und stellen Sie sicher, dass Sie die E-Mail-Konfiguration aus dem Diskursforum wie unten beschrieben erhalten.

E-Mail von Diskurs, die das Passwort enthält

Klicken Sie auf den ‚Link‚.

Und Sie gelangen auf die Seite ‚Diskurs Willkommen‘.

Willkommen zum Diskurs

Klicken Sie auf die Schaltfläche ‚Klicken Sie hier, um Ihr Konto zu aktivieren‚. Und nun sollten Sie auf die folgende Seite gelangen.

Konto aktivieren

Klicken Sie auf die Schaltfläche ‚Vielleicht später‚.

Das Diskursforum wurde installiert, und wir erhalten die Standard-Homepage wie unten gezeigt.

Diskurs erfolgreich installiert

Sie können zum ‚Admin Dashboard‘ gehen, und Sie erhalten das Diskurs-Admin Dashboard.

Diskurs-Dashboard

Die Diskursforum-Software wurde mit Nginx als Reverse-Proxy auf dem CentOS 7-Server installiert.

Schritt 6 – Zusätzliche Konfiguration des Diskursforums

Während der Diskurs-Installation sagen einige Leute, dass sie die E-Mail-Bestätigung für die Aktivierung durch den Admin-Benutzer nicht erhalten.

Stellen Sie für dieses Problem sicher, dass Sie das richtige SMTP-Konto in der Konfigurationsanwendung.yml haben. Oder Sie können das Admin-Konto manuell von Ihrem Server aus aktivieren.

Um Ihr Verwaltungskonto manuell zu aktivieren, gehen Sie in das Verzeichnis ‚/var/discourse‘.

cd /var/discourse

Greifen Sie nun mit folgendem Befehl auf den Diskurscontainer zu.

./launcher enter app

Und aktivieren Sie den ersten Admin-Benutzer mit dem rails-Befehl wie unten gezeigt.

rails c
u = User.last
u.admin = true
u.activate
u.save

Jetzt können Sie sich mit Ihrem Benutzernamen und Passwort in das Diskursforum einloggen.

Verweis

Das könnte dich auch interessieren …