Wie installiert man Askbot mit Nginx und Let’s Encrypt auf CentOS 8

Askbot ist eine freie, quelloffene und hochgradig anpassbare Frage- und Antwortforum-Software, die in Python und Django geschrieben wurde. Es ist einfach, leichtgewichtig und anderen Forenprogrammen wie StackOverflow und YahooAnswers sehr ähnlich. Askbot bietet eine Fülle von Funktionen, einschließlich Tags und Kategorien, E-Mail-Benachrichtigungen, karmabasiertes System, Abstimmungen, Inhaltsmoderation und vieles mehr.

In diesem Tutorial zeigen wir Ihnen, wie Sie die Askbot-Forumssoftware auf CentOS 8 mit Let’s Encrypt SSL installieren.

Voraussetzungen

  • Ein Server, auf dem CentOS 8 läuft.
  • Ein Root-Passwort wird auf Ihrem Server eingerichtet.

Erforderliche Abhängigkeiten installieren

Bevor Sie beginnen, müssen Sie einige erforderliche Abhängigkeiten in Ihrem System installieren.

Installieren Sie zuerst die „Entwicklungswerkzeuge“ mit folgendem Befehl:

dnf group install 'Development Tools'

Installieren Sie anschließend das EPEL-Repository und andere Python-Abhängigkeiten mit dem folgenden Befehl:

dnf install epel-release -y
dnf install python2-pip python2-devel python2-six -y

Sobald alle erforderlichen Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.

Installieren und Konfigurieren von PostgreSQL

Askbot verwendet PostgreSQL zum Speichern seiner Daten. Sie müssen ihn also in Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:

dnf install postgresql-server postgresql-devel postgresql-contrib -y

Nach der Installation initialisieren Sie die Datenbank mit dem folgenden Befehl:

postgresql-setup initdb

Sie sollten die folgende Ausgabe erhalten:

WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Als Nächstes starten Sie den PostgreSQL-Dienst und aktivieren ihn nach dem Systemneustart mit folgendem Befehl:

systemctl start postgresql
systemctl enable postgresql

Melden Sie sich dann mit folgendem Befehl in der PostgreSQL-Shell an:

su - postgres
[[email protected] ~]$ psql

Ausgabe:

psql (10.6)
Type "help" for help.
postgres=# 

Als nächstes erstellen Sie eine Datenbank und einen Benutzer für Askbot mit dem folgenden Befehl:

postgres=# create database askbot;
postgres=# create user askbot with password 'password';

Als nächstes gewähren Sie dem Askbot alle Privilegien mit dem folgenden Befehl:

postgres=# grant all privileges on database askbot to askbot;

Schließlich beenden Sie die PostgreSQL-Shell mit folgendem Befehl:

postgres=# \q

Als nÃ?chstes mÃ?ssen Sie die lokale Benutzerauthentifizierung fÃ?r PostgreSQL konfigurieren. Sie können dies tun, indem Sie die Datei pg_hba.conf editieren:

nano /var/lib/pgsql/data/pg_hba.conf

Ersetzen Sie in den folgenden Zeilen peer durch md5:

local   all             all                                    md5  
host    all             all             127.0.0.1/32           md5  
host    all             all             ::1/128                md5  

Speichern und schliessen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den PostgreSQL-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart postgresql

Installieren und Konfigurieren von Askbot

Bevor Sie Askbot installieren, müssen Sie einen Benutzer für Askbot anlegen. Mit folgendem Befehl können Sie einen neuen Askbot-Benutzer anlegen und ein Passwort festlegen:

useradd -m -s /bin/bash askbot
passwd askbot

Fügen Sie als Nächstes den Benutzer Askbot der Gruppe wheel für den Zugriff auf sudo-Befehle hinzu:

usermod -a -G wheel askbot

Als nächstes installieren Sie das Paket python virtualenv mit dem folgenden Befehl:

pip2 install virtualenv six

Ändern Sie nach der Installation den Benutzer auf den Askbot und erstellen Sie eine neue virtuelle Umgebung für Askbot mit dem folgenden Befehl:

su - askbot
virtualenv askbot

Sie sollten die folgende Ausgabe sehen:

created virtual environment CPython2.7.16.final.0-64 in 663ms
  creator CPython2Posix(dest=/home/askbot/askbot, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/tmp/tmp9YFr7B/seed-app-data/v1)
  activators PythonActivator,CShellActivator,FishActivator,PowerShellActivator,BashActivator

Ändern Sie als nächstes das Verzeichnis auf askbot und aktivieren Sie die virtuelle Umgebung mit folgendem Befehl:

cd askbot
source bin/activate

Ausgabe:

(askbot) [[email protected] askbot]$

Als nächstes installieren Sie Askbot und andere erforderliche Abhängigkeiten mit dem folgenden Befehl:

pip2 install six==1.10.0
pip2 install askbot psycopg2

Als nächstes erstellen Sie ein neues Verzeichnis für Ihre Anwendung, ändern das Verzeichnis auf Ihre Anwendung und richten den Askbot mit dem folgenden Befehl ein:

mkdir myapp
cd myapp
askbot-setup

Sie sollten die folgende Ausgabe sehen:

Deploying Askbot - Django Q&A forum application
Problems installing? -> please email [email protected]

To CANCEL - hit Ctr-C at any time

Enter directory path (absolute or relative) to deploy
askbot. To choose current directory - enter "."
> .

Geben Sie „.“ ein und drücken Sie Enter, um fortzufahren. Sie sollten die folgende Ausgabe sehen:

Please select database engine:
1 - for postgresql, 2 - for sqlite, 3 - for mysql, 4 - oracle
type 1/2/3/4: 1

Geben Sie 1 ein, um eine postgresql-Datenbank-Engine auszuwählen und drücken Sie Enter, um fortzufahren. Sie sollten die folgende Ausgabe sehen:

Please enter database name (required)
> askbot

Please enter database user (required)
> askbot

Please enter database password (required)
> password

Geben Sie Ihre Askbot-Datenbank-Details ein und drücken Sie Enter. Sobald die Installation beendet ist, sollten Sie die folgende Ausgabe sehen:

Copying files: 
* __init__.py 
* manage.py 
* urls.py 
* django.wsgi 
Creating settings file
settings file created

copying directories:  * doc
* cron
* upfiles

Done. Please find further instructions at http://askbot.org/doc/

Als nächstes generieren Sie die statischen Dateien und die Datenbank von Askbot Django mit folgendem Befehl:

python manage.py collectstatic
python manage.py syncdb

Geben Sie Ihren gewünschten Admin-Benutzernamen, Ihre E-Mail-Adresse und Ihr Passwort wie unten gezeigt ein:

You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'askbot'): askbotadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Installieren und Konfigurieren von uWSGI

Als nächstes müssen Sie uWSGI auf Ihrem System installieren. uWSGI ist ein Software-Werkzeug, das verwendet wird, um Python-basierte Web-Anwendungen auszuführen. Sie können es mit dem folgenden Befehl installieren:

pip2 install uwsgi

Nachdem Sie uWSGI installiert haben, erstellen Sie ein neues Verzeichnis für uWSGI mit dem folgenden Befehl:

mkdir -p /etc/uwsgi/sites

Als nächstes erstellen Sie eine neue uWSGI-Konfigurationsdatei wie unten gezeigt:

nano /etc/uwsgi/sites/askbot.ini

Fügen Sie die folgenden Zeilen hinzu:

[uwsgi]

chdir = /home/askbot/askbot/myapp
home = /home/askbot/askbot
static-map = /m=/home/askbot/askbot/myapp/static
wsgi-file = /home/askbot/askbot/myapp/django.wsgi
master = true
processes = 5
# Askbot will running under the sock file
socket = /run/uwsgi/askbot.sock
chmod-socket = 664
uid = askbot
gid = nginx
vacuum = true
# uWSGI Log file
ogto = /var/log/uwsgi.log

Erstellen einer Systemdienstdatei für uWSGI

Als nächstes müssen Sie eine systemd Service-Datei erstellen, um den uWSGI-Service zu verwalten. Sie können sie mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/uwsgi.service

Fügen Sie die folgenden Zeilen hinzu:

[Unit]
Description=uWSGI service

[Service]
ExecStartPre=/bin/bash -c 'mkdir -p /run/uwsgi; chown askbot:nginx /run/uwsgi'
ExecStart=/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Installieren und Konfigurieren von Nginx

Als nÃ?chstes mÃ?ssen Sie Nginx installieren und konfigurieren, um Ihre Askbot-Anwendung zu bedienen.

Installieren Sie zunächst den Nginx-Webserver mit folgendem Befehl:

dnf install nginx -y

Erstellen Sie nach der Installation eine neue Konfigurationsdatei für den virtuellen Host für Askbot:

nano /etc/nginx/conf.d/askbot.conf

Fügen Sie die folgenden Zeilen hinzu:

server {
         listen 80;
         server_name askbot.linuxbuz.com;
         location / {
         include         uwsgi_params;
         uwsgi_pass	 unix:/run/uwsgi/askbot.sock;
    }
 }

Speichern und schließen Sie die Datei. Starten Sie dann den Nginx- und uWSGI-Dienst und aktivieren Sie sie nach dem Systemneustart mit dem folgenden Befehl:

systemctl start nginx
systemctl enable nginx
systemctl start uwsgi
systemctl enable uwsgi

Sicherer Askbot mit Let’s Encrypt SSL

Als Nächstes müssen Sie das Certbot-Dienstprogramm in Ihrem System installieren, um Let’s Encrypt SSL für die Askbot-Domain herunterzuladen und zu installieren.

Sie können den Certbot-Client mit dem folgenden Befehl installieren:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Als nächstes erhalten und installieren Sie ein SSL-Zertifikat für Ihre Askbot-Domain mit folgendem Befehl:

certbot-auto --nginx -d askbot.linuxbuz.com

Der obige Befehl installiert zunächst alle erforderlichen Abhängigkeiten auf Ihrem Server. Sobald die Installation abgeschlossen ist, werden Sie gebeten, eine E-Mail-Adresse anzugeben und den unten aufgeführten Bedingungen zuzustimmen:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for askbot.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/askbot.conf

Wählen Sie als nächstes aus, ob HTTP-Verkehr wie unten gezeigt zu HTTPS umgeleitet werden soll oder nicht:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Geben Sie 2 ein und drücken Sie Enter, um fortzufahren. Sobald die Installation abgeschlossen ist, sollten Sie die folgende Ausgabe sehen:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/askbot.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://askbot.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=askbot.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/askbot.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/askbot.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-06-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Konfigurieren Sie Firewall und SELinux

Als nÃ?chstes mÃ?ssen Sie eine Firewall-Regel erstellen, um HTTP- und HTTPS-Dienste von externen Netzwerken zuzulassen. Sie können dies mit dem folgenden Befehl erlauben:

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

Standardmäßig ist SELinux in CentOS 8 aktiviert. Es wird empfohlen, es zu deaktivieren, um Askbot korrekt arbeiten zu lassen. Sie können es deaktivieren, indem Sie die Datei /etc/selinux/config editieren:

nano /etc/selinux/config

Suchen Sie die folgende Zeile:

SELINUX=enforcing

Und ersetzen Sie es durch die folgende Zeile:

SELINUX=disabled

Speichern und schließen Sie die Datei. Starten Sie dann Ihr System neu, um die Änderungen zu übernehmen:

Zugriff auf Askbot

Öffnen Sie nun Ihren Webbrowser und geben Sie die URL https://askbot.linuxbuz.com ein. Sie werden auf den folgenden Bildschirm weitergeleitet:

Askbot Web-Schnittstelle

Klicken Sie auf die Schaltfläche Anmelden. Im folgenden Bildschirm sollten Sie die Login-Seite von Askbot sehen:

Askbot-Anmeldung

Geben Sie Ihren Askbot-Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf die Schaltfläche Anmelden. Auf dem folgenden Bildschirm sollten Sie das Askbot-Dashboard sehen:

Fragen stellen in Askbot

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben das Askbot-Forum erfolgreich auf CentOS 8 installiert und konfiguriert und es mit Let’s Encrypt SSL gesichert. Sie können nun damit beginnen, eine Frage und Antwort mit Askbot zu erstellen.

Das könnte Dich auch interessieren …