Askbot ist eine Open-Source-Software zum Erstellen von Q&A-Foren basierend auf dem Python Django Framework. Es ist im Grunde ein Q&A-System wie StackOverflow, Yahoo Answers und andere. Erstellt von Mike Chan und Sailing Cai im Jahr 2009, und es ist einfach auf Linux-Systemen wie Ubuntu und CentOS zu installieren und zu konfigurieren. Viele große Open-Source-Softwareprojekte wie Fedora und LibreOffice verwenden es.
In diesem Tutorial zeigen wir Ihnen, wie Sie die Askbot Python Django-Anwendung mit uWSGI und Nginx-Webserver auf einem CentOS 7-System installieren. Als Datenbank verwenden wir PostgreSQL für die Askbot-Installation.
Was wir tun werden
- Installieren Sie Abhängigkeiten
- PostgreSQL installieren und konfigurieren
- Installieren und konfigurieren Sie Askbot
- uWSGI installieren und konfigurieren
- Nginx-Webserver installieren und konfigurieren
- Testen Sie die Einrichtung
Voraussetzungen
- CentOS 7-Server
- Root-Rechte
Schritt 1 - Abhängigkeiten installieren
In diesem Schritt werden wir einige Pakete installieren, die für eine erfolgreiche Askbot-Installation benötigt werden. Dazu gehören „Development Tools“, das Epel-Repository und einige Python-bezogene Tools (zum Verwalten von Python-Paketen). Fangen wir also an.
Installieren Sie zuerst CentOS 'Development Tools' mit dem folgenden Yum-Gruppenbefehl.
yum group install 'Development Tools'
Installieren Sie dann das Epel-Repository.
yum -y install epel-release
Und schließlich installieren Sie die Python-Pakete, einschließlich Python Pip, Python-Devel und Python Six.
yum -y install python-pip python-devel python-six
Schritt 2 – PostgreSQL installieren und konfigurieren
Jetzt brauchen wir die PostgreSQL-Datenbank, die im CentOS-Repository verfügbar ist. In diesem Abschnitt besprechen wir, wie Sie die PostgreSQL-Datenbank installieren, den Postgres-Passwortbenutzer ändern, einen neuen Benutzer und eine neue Datenbank für die Askbot-Installation erstellen und schließlich die Postgres-Authentifizierungskonfiguration ändern können.
Beginnen wir also mit der Installation von PostgreSQL aus dem Repository mit dem folgenden Befehl yum.
yum -y install postgresql-server postgresql-devel postgresql-contrib
Sobald die Installation abgeschlossen ist, müssen wir die Datenbank initialisieren, was Sie mit dem folgenden Befehl tun können.
postgresql-setup initdb
Fahren Sie fort, starten Sie Postgres und aktivieren Sie es so, dass es beim Booten automatisch gestartet wird.
systemctl start postgresql
systemctl enable postgresql
An dieser Stelle sollte die PostgreSQL-Datenbank installiert werden. Als nächstes müssen wir das Postgres-Benutzerkennwort zurücksetzen. Melden Sie sich dazu zunächst als „postgres“-Benutzer an und greifen Sie auf das psql-Befehlszeilentool zu.
su - postgres
psql
Geben Sie dann dem Postgres-Benutzer ein neues Passwort.
\password postgres
Erstellen Sie nun eine neue Datenbank und einen neuen Benutzer für Askbot. Wir möchten beispielsweise einen neuen Benutzer „hakaselabs“ erstellen ' mit dem Passwort 'hakase123 ' und die Datenbank namens 'askbotdb '. Die folgenden Postgres-Abfragen helfen uns dabei, all diese zu erstellen.
create database askbotdb;
create user hakaselabs with password 'hakase123';
grant all privileges on database askbotdb to hakaselabs;
Jetzt wurden also eine Datenbank und ein Benutzer für die Askbot-Installation erstellt. Der nächste Schritt besteht darin, die Postgres-Konfiguration für die Einrichtung der Authentifizierung zu bearbeiten, was Sie tun können, indem Sie zum Verzeichnis „pgsql/data“ gehen und die Datei „pg_hba.conf“ mit vim bearbeiten.
cd /var/lib/pgsql/data/
vim pg_hba.conf
Sobald Sie sich in der Datei befinden, ändern Sie die gesamte Authentifizierung auf md5, wie unten gezeigt.
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Speichern und beenden Sie nun die Datei und starten Sie dann den Postgres-Dienst neu.
systemctl restart postgresql
Inzwischen ist also die PostgreSQL-Datenbank installiert; Datenbank für die Askbot-Installation wurde erstellt; und die Postgres-Benutzerauthentifizierungsmethode wurde in md5 geändert.
Schritt 3 – Installiere und konfiguriere Askbot
In diesem Schritt werden wir die Installation und Konfiguration von Askbot besprechen. Wir werden Askbot unter einem Benutzer namens „askbot“ und unter Verwendung von virtualenv python installieren. Fangen wir also an.
Erstellen Sie zunächst einen neuen Benutzer ‚askbot‘ und geben Sie dem Benutzer ein neues Passwort.
useradd -m -s /bin/bash askbot
passwd askbot
Fügen Sie dann den Benutzer „askbot“ zur Gruppe „wheel“ für den Zugriff auf den sudo-Befehl hinzu (nicht sicher, was „sudo“ ist? Erfahren Sie hier mehr darüber).
usermod -a -G wheel askbot
Aktualisieren Sie jetzt pip auf die neueste Version und installieren Sie das Paket python virtualenv.
pip install --upgrade pip
pip install virtualenv six
Nächste. Melden Sie sich als „askbot“-Benutzer an und erstellen Sie eine neue virtuelle Python-Umgebung „hakase-labs“ mit virtualenv.
su - askbot
virtualenv hakase-labs/
Gehen Sie in das Verzeichnis „hakase-labs“ und aktivieren Sie die virtuelle Umgebung für die Installation von Askbot.
cd hakase-labs/
source bin/activate
Installieren Sie jetzt askbot und andere Python-Pakete mit dem Pip-Befehl in der virtuellen Umgebung von ‚hakase-labs‘.
pip install six
pip install askbot psycopg2
Als nächstes erstellen Sie ein neues Verzeichnis für das ‚Askbot‘-Projekt. Bitte stellen Sie sicher, dass Sie nicht „askbot“ als Verzeichnisnamen verwenden. In unserem Fall haben wir beispielsweise ein neues Verzeichnis mit dem Namen „myapp“
erstelltmkdir myapp/
Wechseln Sie in das myapp-Verzeichnis und führen Sie den Befehl „askbot-setup“ aus.
cd myapp/
askbot-setup
Der Befehl ‚askbot-setup‘ wird Sie nach bestimmten Dingen fragen. Beispielsweise werden Sie nach dem Verzeichnispfad zum Bereitstellen von Askbot gefragt – Sie können „.“ eingeben. und drücken Sie die Eingabetaste, um fortzufahren. Wenn Sie nach der Datenbank-Engine gefragt werden, geben Sie „1“ ein, um postgresql zu verwenden, und drücken Sie die Eingabetaste. Geben Sie für datenbankbezogene Details den Datenbanknamen als „askbotdb“, den Datenbankbenutzer als „hakaselabs“ und das Passwort als „hakase123“ ein.
Also ist Askbot jetzt im Verzeichnis ‚myapp‘ installiert. Jetzt müssen wir die statischen Dateien von Askbot Django und die Datenbank generieren.
Führen Sie den folgenden Befehl aus, um statische Dateien von Askbot Django zu generieren.
python manage.py collectstatic
Wenn Sie zur Bestätigung aufgefordert werden, geben Sie „yes“ ein und drücken Sie die Eingabetaste.
Führen Sie nun zum Generieren der Datenbank syncdb wie folgt aus.
python manage.py syncdb
Sie werden aufgefordert, den Admin-Benutzer und das Passwort zu erstellen. Geben Sie also bei Aufforderung den Benutzernamen, die E-Mail-Adresse und das Passwort für die Administratorkonfiguration ein.
Askbot ist also inzwischen installiert, statische Dateien wurden generiert und die Datenbankkonfiguration ist abgeschlossen.
Sie können die Askbot-Installation mit dem folgenden runserver-Befehl testen.
python manage.py runserver 0.0.0.0:8080
Öffnen Sie Ihren Webbrowser und geben Sie die IP-Adresse des Servers ein, und Sie sollten eine Seite ähnlich der folgenden sehen:
Schritt 4 – uWSGI installieren und konfigurieren
Wir werden uWSGI als Dienst für das Askbot Django-Projekt verwenden. Insbesondere werden wir uWSGI mit dem Nginx-Webserver für die Askbot-Installation verwenden. Fangen wir also an.
Installieren Sie zuerst uWSGI mit dem Pip-Befehl, wie unten gezeigt.
sudo pip install uwsgi
Erstellen Sie nach Abschluss der Installation ein neues Verzeichnis für die Dateien des virtuellen uWSGI-Hosts. In unserem Fall haben wir beispielsweise „/etc/uwsgi/sites“ erstellt.
mkdir -p /etc/uwsgi/sites
Gehen Sie in das neu erstellte Verzeichnis und erstellen Sie eine neue askbot uWSGI-Konfiguration mit vim.
cd /etc/uwsgi/sites
vim askbot.ini
Fügen Sie die folgende Konfiguration in die Datei ein.
[uwsgi]
# Project directory, Python directory
chdir = /home/askbot/hakase-labs/myapp
home = /home/askbot/hakase-labs/
static-map = /m=/home/askbot/hakase-labs/myapp/static
wsgi-file = /home/askbot/hakase-labs/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
logto = /var/log/uwsgi.log
Das ist es. Speichern Sie die Datei und beenden Sie den Editor.
Fügen Sie als Nächstes eine neue uWSGI-Dienstskriptdatei zum Verzeichnis ‚/etc/systemd/system‘ hinzu. Gehen Sie in das Verzeichnis und erstellen Sie die Datei „uwsgi.service“ mit vim.
cd /etc/systemd/system/
vim uwsgi.service
Fügen Sie die folgende uWSGI-Dienstkonfiguration in die Datei ein.
[Unit]
Description=uWSGI Emperor 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 beenden.
Laden Sie jetzt die systemd-Dienste neu und aktivieren Sie uWSGI, um beim Booten automatisch zu starten.
systemctl daemon-reload
systemctl enable uwsgi
Damit wurde uWSGI installiert und Sie sollten sehen, dass es als Dienst läuft.
Schritt 5 – Nginx-Webserver installieren und konfigurieren
Also, Askbot ist jetzt installiert und läuft unter der uWSGI-Sock-Datei ‚askbot.sock‘. In diesem Schritt verwenden wir den Nginx-Webserver als Reverse-Proxy für die uWSGI-Anwendung „Askbot“.
Installieren Sie Nginx zunächst mit dem Befehl yum.
yum -y install nginx
Gehen Sie nun in das Nginx-Verzeichnis „conf.d“ und erstellen Sie mit dem vim-Editor eine neue virtuelle Hostdatei „askbot.conf“.
cd /etc/nginx/conf.d/
vim askbot.conf
Fügen Sie die folgende Askbot Nginx-Konfiguration in die Datei ein.
server {
listen 80;
server_name askbot.me www.askbot.me;
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/askbot.sock;
}
}
Speichern Sie die Datei und beenden Sie den Editor. Testen Sie nun die Konfiguration, um sicherzustellen, dass kein Fehler vorliegt.
nginx -t
Starten Sie als Nächstes die Nginx- und uWSGI-Dienste.
systemctl start nginx
systemctl start uwsgi
Und ermöglichen Sie ihnen, beim Booten automatisch zu starten.
systemctl enable nginx
systemctl enable uwsgi
Daher wird Nginx jetzt als Reverse-Proxy für die uWSGI-Anwendung ‚Askbot‘ installiert.
Schritt 6 – Testen Sie die Einrichtung
Öffnen Sie Ihren Webbrowser und besuchen Sie den Askbot-Domänennamen:askbot.me, und Sie werden die Startseite sehen, wie unten gezeigt.
Hier ist die Anmeldeseite des Askbot-Benutzers:
Askbot-Benutzer-Dashboard:
Askbot-Admin-Einstellung:
Askbot Django-Admin-Login:
Askbot Django Admin-Dashboard:
Die Q&A-Systemanwendung „Askbot“ wurde also erfolgreich mit uWSGI und Nginx-Webserver auf dem CentOS 7-Server installiert.