So installieren Sie das Taiga Project Management Tool unter CentOS 7

Taiga ist eine kostenlose Open Source-Anwendung für das Projektmanagement. Im Gegensatz zu anderen Projektmanagement-Tools verwendet Taiga einen inkrementellen agilen Ansatz, um die Entwicklung des Projekts zu verwalten. Taiga ist eine sehr leistungsfähige und vollständig anpassbare Anwendung. Das Backend von Taiga ist in Python unter Verwendung des Django-Frameworks geschrieben. Das Frontend ist in JavaScript mit CoffeeScript- und AngularJS-Frameworks geschrieben. Taiga enthält Funktionen wie Projektzusammenarbeit, Kanban-Board, Fehlerverfolgung, Berichterstellung, Zeiterfassung, Rückstände, Wiki und mehr.

Voraussetzungen

  • Eine Vultr CentOS 7-Serverinstanz mit mindestens 1 GB RAM.
  • Ein Sudo-Benutzer .

In diesem Tutorial wird taiga.example.comder Domänenname verwendet, der auf den Server verweist. Ersetzen Sie alle Vorkommen von taiga.example.comdurch Ihren tatsächlichen Domainnamen.

Aktualisieren Sie Ihr Basissystem mithilfe der Anleitung zum Aktualisieren von CentOS 7 . Fahren Sie nach der Aktualisierung Ihres Systems mit der Installation von PostgreSQL fort.

Installieren Sie PostgreSQL

PostgreSQL ist ein objektrelationales Datenbanksystem, das für seine Stabilität und Geschwindigkeit bekannt ist. Taiga verwendet PostgreSQL zum Speichern seiner Datenbank. Fügen Sie das PostgreSQL-Repository zum System hinzu.

sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm

Installieren Sie den PostgreSQL-Datenbankserver.

sudo yum -y install postgresql10-server postgresql10-contrib postgresql10 

Initialisieren Sie die Datenbank.

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

Starten Sie den PostgreSQL-Server und aktivieren Sie ihn beim Start automatisch.

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

Ändern Sie das Kennwort für den Standardbenutzer von PostgreSQL.

sudo passwd postgres

Melden Sie sich als PostgreSQL-Benutzer an.

sudo su - postgres

Erstellen Sie einen neuen PostgreSQL-Benutzer für Taiga.

createuser taiga 

PostgreSQL bietet die psqlShell zum Ausführen von Abfragen in der Datenbank. Wechseln Sie zur PostgreSQL-Shell.

psql

Legen Sie ein Kennwort für den neu erstellten Benutzer für die Taiga-Datenbank fest.

ALTER USER taiga WITH ENCRYPTED password 'DBPassword';

Durch DBPasswordein sicheres Passwort ersetzen . Erstellen Sie eine neue Datenbank für die Taiga-Installation.

CREATE DATABASE taiga OWNER taiga;

Verlasse die psqlShell.

\q

Wechseln Sie zum sudoBenutzer.

exit

Installieren Sie Python 3

Python 2.7 ist auf einem CentOS 7-Server vorinstalliert, für Taiga ist jedoch Python Version 3.4 oder höher erforderlich.

Wir werden Python Version 3.6 von der Quelle installieren. Installieren Sie die erforderlichen Build-Tools und den Compiler.

sudo yum -y install gcc autoconf flex bison libjpeg-turbo-devel freetype-devel zlib-devel zeromq3-devel gdbm-devel ncurses-devel automake libtool libffi-devel curl git tmux libxml2-devel libxslt-devel openssl-devel gcc-c++

Laden Sie den Python-Quellcode herunter.

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz

Extrahieren und konfigurieren Sie die Python-Installation.

tar xf Python-3.6.3.tar.xz
cd Python-3.6.3
./configure --enable-optimizations --prefix=/usr

Nehmen Sie eine alternative Installation vor.

sudo make altinstall

Hinweis : Alternative Installationen installieren Python 3.6, ohne die Standardversion von Python zu ersetzen. Wenn Sie das Standard-Python in CentOS 7 ersetzen, wird möglicherweise der YUMRepository-Manager beschädigt.

Sie können nun die Version überprüfen.

python3.6 -V

Sie sollten Folgendes sehen.

[user@vultr Python-3.6.3]$ python3.6 -V
Python 3.6.3

Installieren Sie Python Virtual Environment mit pip.

sudo pip3.6 install virtualenv virtualenvwrapper
sudo pip3.6 install --upgrade setuptools pip 

Die virtuelle Python-Umgebung wird verwendet, um eine isolierte virtuelle Umgebung für ein Python-Projekt zu erstellen. Eine virtuelle Umgebung enthält ihre eigenen Installationsverzeichnisse und teilt keine Bibliotheken mit globalen und anderen virtuellen Umgebungen.

Installieren Sie RabbitMQ

Taiga verwendet RabbitMQ, um die Nachrichtenwarteschlange zu verarbeiten. Für RabbitMQ müssen Erlang-Bibliotheken funktionieren. Installieren Sie Erlang.

sudo yum -y install erlang

Importieren Sie den RabbitMQ GPG-Signaturschlüssel.

sudo rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

Installieren Sie RabbitMQ.

sudo yum -y install https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el7.noarch.rpm

Starten und aktivieren Sie den RabbitMQ-Server.

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

Fügen Sie RabbitMQ-Benutzer und vhost hinzu. Geben Sie dem Benutzer auch die Berechtigung über den Host.

sudo rabbitmqctl add_user taiga StrongMQPassword
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"

Stellen Sie sicher, dass Sie StrongMQPassworddurch ein sicheres Passwort ersetzen .

Installieren Sie Nodejs

Node.js Version 7 oder höher ist erforderlich, um das Frontend der Taiga zu kompilieren. Fügen Sie das Node.js-Repository der Version 8 hinzu.

curl -sL https://rpm.nodesource.com/setup_8.x | sudo -E bash -

Installieren Sie Node.js und das pwgenDienstprogramm.

sudo yum install -y nodejs pwgen

pwgenwird später verwendet, um eine starke geheime Zeichenfolge zu generieren. Installieren Sie CoffeeScript, da es zum Kompilieren von Taiga-Dateien verwendet wird, die mit dem CoffeeScript-Framework geschrieben wurden.

sudo npm install -g coffee-script gulp

Installieren Sie das Taiga Backend

Fügen Sie einen neuen Systembenutzer für Taiga hinzu, um sicherzustellen, dass Taiga-Prozesse als nicht privilegierter Benutzer ausgeführt werden.

sudo useradd -s /bin/bash taiga
sudo su - taiga

Hinweis : Von nun an müssen alle Befehle als nicht privilegierter Benutzer ausgeführt werden, taigabis Sie aufgefordert werden, wieder zum sudoBenutzer zu wechseln .

Erstellen Sie ein neues Verzeichnis zum Speichern der Protokolldateien.

mkdir -p ~/logs

Klonen Sie das Taiga-Backend-Repository von GitHub und checken Sie den neuesten stabilen Zweig aus.

git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable

Konfigurieren Sie virtualenvwrapperdie Verwendung von Python 3.6 anstelle von Standard-Python.

echo "VIRTUALENVWRAPPER_PYTHON='/bin/python3.6'" >> ~/.bashrc
echo "source /usr/bin/virtualenvwrapper.sh" >> ~/.bashrc

Schließlich Quelle der ~/.bashrcDatei.

source ~/.bashrc

Erstellen Sie jetzt mit Python 3.6 eine neue virtuelle Umgebung für Taiga.

mkvirtualenv -p /bin/python3.6 taiga
pip3.6 install --upgrade setuptools

Installieren Sie die erforderlichen Python-Abhängigkeiten mit pip.

pip3.6 install -r requirements.txt

Füllen Sie die Datenbank mit den erforderlichen Anfangsdaten.

python3.6 manage.py migrate --noinput
python3.6 manage.py loaddata initial_user
python3.6 manage.py loaddata initial_project_templates
python3.6 manage.py compilemessages
python3.6 manage.py collectstatic --noinput

Die obigen Befehle schreiben Daten in die PostgreSQL-Datenbank. Taiga liefert auch einige Demo- oder Beispieldaten aus, die für die Bewertung des Produkts hilfreich sein können. Wenn Sie die Beispieldaten installieren möchten, führen Sie Folgendes aus.

python3.6 manage.py sample_data

Hinweis : Die Installation von Beispieldaten ist optional und dient nur zur Bewertung des Produkts.

Bevor wir mit der Erstellung der Konfigurationsdatei für das Taiga-Backend fortfahren, müssen wir eine geheime Zeichenfolge generieren. Diese Zeichenfolge wird zum Verschlüsseln der Sitzungsdaten verwendet.

Generieren Sie eine zufällige Zeichenfolge mit 64 Zeichen.

pwgen -s -1 64

Sie sollten die Ausgabe als zufällige Zeichenfolge sehen.

(taiga) [taiga@vultr taiga-back]$ pwgen -s -1 64
CZfjWjHctPwnLZsDysWqaZcYfRCviHbI4fVRwfhpbtAHPNBtmkcegpwpYjTtEziJ

Erstellen Sie eine neue Konfigurationsdatei für das Taiga-Backend.

nano ~/taiga-back/settings/local.py

Füllen Sie die Datei mit dem folgenden Code.

from .common import *

MEDIA_URL = "https://taiga.example.com/media/"
STATIC_URL = "https://taiga.example.com/static/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "taiga.example.com"

SECRET_KEY = "Generated_Secret_Key"

DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL

#CELERY_ENABLED = True

EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga"}

# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_USE_TLS = False
#EMAIL_HOST = "mail.example.com"
#EMAIL_HOST_USER = "[email protected]"
#EMAIL_HOST_PASSWORD = "SMTPPassword"
#EMAIL_PORT = 25

# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"

Stellen Sie sicher, dass Sie den Beispieldomänennamen durch den tatsächlichen im obigen Code ersetzen. Ersetzen Sie außerdem Generated_Secret_Keyden tatsächlichen geheimen Schlüssel und StrongMQPassworddas tatsächliche Kennwort für den Benutzer der Taiga-Nachrichtenwarteschlange. Wenn Sie einen SMTP-Server bereit haben und die E-Mail-Sendefunktionen sofort verwenden möchten, können Sie die E-Mail-Optionen auskommentieren und die entsprechenden Werte festlegen. Wenn Sie keinen Mailserver bereit haben, können Sie das Einrichten der E-Mail-Funktion vorerst überspringen und später in dieser Konfigurationsdatei festlegen.

Wenn Sie die GitHub-Anmeldung aktivieren möchten, erstellen Sie eine Anwendung in GitHub und geben Sie die API-Client-ID und das Client-Geheimnis an.

Führen Sie den integrierten Django-Server aus, um sofort zu überprüfen, ob das Taiga-Backend gestartet werden kann.

workon taiga
python manage.py runserver

Sie sehen die folgende Ausgabe, wenn der Server erfolgreich gestartet wurde.

(taiga) [taiga@vultr taiga-back]$ workon taiga
(taiga) [taiga@vultr taiga-back]$ python manage.py runserver
Trying import local.py settings...
Trying import local.py settings...
Performing system checks...

System check identified no issues (0 silenced).
October 25, 2017 - 07:07:28
Django version 1.10.6, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Öffnen Sie eine andere Terminalsitzung und führen Sie die folgenden Schritte aus, um zu überprüfen, ob auf die API zugegriffen werden kann.

curl http://127.0.0.1:8000/api/v1/

Sie sehen eine ähnliche Ausgabe, die vom API-Aufruf zurückgegeben wird.

[user@vultr ~]$ curl http://127.0.0.1:8000/api/v1/
{"locales": "http://127.0.0.1:8000/api/v1/locales", "auth": "http://127.0.0.1:8000/api/v1/auth", "users": "http://127.0.0.1:8000/api/v1/users", "roles": "http://127.0.0.1:8000/api/v1/roles", "user-storage": "http://127.0.0.1:8000/api/v1/user-storage", "notify-policies": "http://127.0.0.1:8000/api/v1/notify-policies", "projects": "http://127.0.0.1:8000/api/v1/projects", "projects/(?P<resource_id>\\d+)/fans": "http://127.0.0.1:8000/api/v1/projects/(?P<resource_id>\\d+)/fans", "projects/(?P<resource_id>\\d+)/watchers": "http://127.0.0.1:8000/api/v1/projects/(?P<resource_id>\\d+)/watchers", "project-templates": "http://127.0.0.1:8000/api/v1/project-templates",

Stoppen Sie den Taiga-Backend-Server durch Drücken von " Ctrl + C" und deaktivieren Sie die virtuelle Umgebung.

deactivate

Installieren Sie das Frontend

Das Taiga-Frontend ist die Komponente von Taiga, die die Web-Benutzeroberfläche bedient. Klonen Sie das Taiga-Frontend-Repository von Github und checken Sie den neuesten stabilen Zweig aus.

cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
cd taiga-front-dist
git checkout stable

Erstellen Sie eine neue Konfigurationsdatei für das Taiga-Frontend.

nano ~/taiga-front-dist/dist/conf.json

Füllen Sie die Datei damit.

{
    "api": "https://taiga.example.com/api/v1/",
    "eventsUrl": "wss://taiga.example.com/events",
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "eventsReconnectTryInterval": 10000,
    "debug": true,
    "debugInfo": false,
    "defaultLanguage": "en",
    "themes": ["taiga"],
    "defaultTheme": "taiga",
    "publicRegisterEnabled": true,
    "feedbackEnabled": true,
    "privacyPolicyUrl": null,
    "termsOfServiceUrl": null,
    "maxUploadFileSize": null,
    "contribPlugins": [],
    "tribeHost": null,
    "importers": [],
    "gravatar": true
}

Stellen Sie sicher, dass die exampleDomain durch die tatsächliche Domain ersetzt wird. Sie können auch die Standardsprache und andere Parameter in der obigen Konfiguration ändern.

Installieren Sie Taiga Events

Neben dem Frontend und Backend müssen wir auch Taiga-Events installieren. Taiga Events ist ein Web-Socket-Server, mit dem das Taiga-Frontend Änderungen in Modulen wie Backlog, Kanban und mehr in Echtzeit anzeigen kann. Es verwendet den RabbitMQ-Server für die Nachrichtenverarbeitung.

Klonen Sie das Taiga-Ereignis-Repository von Github.

cd ~
git clone https://github.com/taigaio/taiga-events.git taiga-events
cd taiga-events

Installieren Sie die Node.js-Abhängigkeiten mit npm.

npm install

Erstellen Sie eine neue Konfigurationsdatei für Taiga-Ereignisse.

nano ~/taiga-events/config.json

Füllen Sie die Datei wie folgt aus.

{
    "url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga",
    "secret": "Generated_Secret_Key",
    "webSocketServer": {
        "port": 8888
    }
}

Ersetzen Sie ihn Generated_Secret_Keydurch den 64 Zeichen langen geheimen Schlüssel, den Sie in der Vergangenheit generiert haben. Der geheime Schlüssel sollte genau mit dem Schlüssel übereinstimmen, den Sie in der Taiga-Backend-Konfigurationsdatei angegeben haben. Aktualisieren Sie außerdem das StrongMQPasswordKennwort für den Benutzer der Taiga-Nachrichtenwarteschlange mit dem tatsächlichen Kennwort.

Zirkus konfigurieren

Circus ist ein Prozessmanager für Python-Anwendungen. Wir werden Circus verwenden, um das Taiga-Backend und Events auszuführen.

Wechseln Sie zurück zum sudoBenutzer.

exit

Hinweis : Ab sofort müssen Sie die Befehle mit sudouser ausführen .

Installieren Sie Circus mit pip.

sudo pip3.6 install circus

Erstellen Sie neue Verzeichnisse zum Speichern von Circus-Konfigurationen.

sudo mkdir /etc/circus
sudo mkdir /etc/circus/conf.d

Erstellen Sie die Standardkonfigurationsdatei für Circus.

sudo nano /etc/circus/circus.ini

Füllen Sie die Datei mit der folgenden Konfiguration.

[circus]
check_delay = 5
endpoint = tcp://127.0.0.1:5555
pubsub_endpoint = tcp://127.0.0.1:5556
include = /etc/circus/conf.d/*.ini

Erstellen Sie eine neue Circus-Konfigurationsdatei zum Ausführen des Taiga-Backends.

sudo nano /etc/circus/conf.d/taiga.ini

Füllen Sie die Datei wie folgt aus.

[watcher:taiga]
working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 4
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 4

[env:taiga]
PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH
TERM=rxvt-256color
SHELL=/bin/bash
USER=taiga
LANG=en_US.UTF-8
HOME=/home/taiga
PYTHONPATH=/home/taiga/.virtualenvs/taiga/lib/python3.6/site-packages

Erstellen Sie eine neue Circus-Konfiguration zum Ausführen von Taiga-Ereignissen.

sudo nano /etc/circus/conf.d/taiga-events.ini

Füllen Sie die Datei wie folgt aus.

[watcher:taiga-events]
working_dir = /home/taiga/taiga-events
cmd = /usr/bin/coffee
args = index.coffee
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/taigaevents.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 12
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/taigaevents.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 12

Jetzt müssen wir eine systemdServicedatei erstellen, um Circus auszuführen. Durch systemddie Verwendung wird sichergestellt, dass Circus beim Neustart und bei Fehlern automatisch gestartet wird.

sudo nano /etc/systemd/system/circus.service

Füllen Sie die Datei.

[Unit]
Description=Circus process manager
After=syslog.target network.target nss-lookup.target
[Service]
Type=simple
ExecReload=/usr/bin/circusctl reload
ExecStart=/usr/bin/circusd /etc/circus/circus.ini
Restart=always
RestartSec=5

[Install]
WantedBy=default.target

Starten Sie Circus und aktivieren Sie den Start automatisch beim Booten.

sudo systemctl start circus
sudo systemctl enable circus

Überprüfen Sie den Status des Zirkus.

circusctl status

Sie sehen folgende Ausgabe.

[user@vultr ~]$ circusctl status
taiga: active
taiga-events: active

Jetzt haben wir Taiga erfolgreich installiert und ausgeführt. Bevor wir es verwenden können, müssen wir die Installation auf einem beliebigen Produktionswebserver verfügbar machen.

Installieren Sie Nginx als Reverse Proxy

Wir werden den Nginx-Webserver als Reverse-Proxy verwenden, um die Anwendung den Benutzern bereitzustellen. Wir werden auch SSL-Zertifikate von Let's Encrypt erhalten und installieren.

Installieren Sie Nginx und Certbot. Certbot ist der offizielle Client für die Ausstellung von Zertifikaten für Let's Encrypt CA.

sudo yum -y install nginx certbot

Passen Sie Ihre Firewall-Einstellung an, um den Standard HTTPund die HTTPSPorts durch die Firewall zuzulassen, da Certbot eine HTTP-Verbindung zur Überprüfung der Domänenberechtigung herstellen muss.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Hinweis : Um Zertifikate von Let's Encrypt CA zu erhalten, müssen Sie sicherstellen, dass die Domäne, für die Sie die Zertifikate generieren möchten, auf den Server zeigt. Wenn nicht, nehmen Sie die erforderlichen Änderungen an den DNS-Einträgen Ihrer Domain vor und warten Sie, bis sich der DNS verbreitet hat, bevor Sie die Zertifikatanforderung erneut stellen. Certbot überprüft die Domänenautorität, bevor die Zertifikate bereitgestellt werden.

Verwenden Sie jetzt den in Certbot integrierten Webserver, um die Zertifikate für Ihre Domain zu generieren.

sudo certbot certonly --standalone -d taiga.example.com

Die generierten Zertifikate werden wahrscheinlich im /etc/letsencrypt/live/taiga.example.com/Verzeichnis gespeichert . Das SSL-Zertifikat wird als beibehalten fullchain.pemund der private Schlüssel wird als gespeichert privkey.pem.

Lassen Sie uns Zertifikate verschlüsseln, die in 90 Tagen ablaufen. Es wird daher empfohlen, die automatische Verlängerung für die Zertifikate mithilfe von Cron-Jobs einzurichten. Cron ist ein Systemdienst, mit dem regelmäßige Aufgaben ausgeführt werden.

Öffnen Sie die Cron-Jobdatei.

sudo crontab -e

Fügen Sie die folgende Zeile hinzu.

0 0 * * * /usr/bin/certbot renew --quiet

Der oben genannte Cron-Job wird täglich um Mitternacht ausgeführt. Wenn das Zertifikat abläuft, werden die Zertifikate automatisch erneuert.

Generieren Sie einen starken Diffie-HellmanParameter. Es bietet eine zusätzliche Sicherheitsebene für den Datenaustausch zwischen Host und Server.

sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048 

Erstellen Sie einen neuen Nginx-Serverblock für das Taiga-Frontend.

sudo nano /etc/nginx/conf.d/taiga.conf

Füllen Sie die Datei wie folgt aus.

server {
    listen 80;
    server_name taiga.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name taiga.example.com;

    access_log /home/taiga/logs/nginx.access.log;
    error_log /home/taiga/logs/nginx.error.log;

    large_client_header_buffers 4 32k;
    client_max_body_size 50M;
    charset utf-8;

    index index.html;

    # Frontend
    location / {
        root /home/taiga/taiga-front-dist/dist/;
        try_files $uri $uri/ /index.html;
    }

    # Backend
    location /api {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001/api;
        proxy_redirect off;
    }

    location /admin {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001$request_uri;
        proxy_redirect off;
    }

    # Static files
    location /static {
        alias /home/taiga/taiga-back/static;
    }

    # Media files
    location /media {
        alias /home/taiga/taiga-back/media;
    }

     location /events {
        proxy_pass http://127.0.0.1:8888/events;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }

    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';

    ssl on;
    ssl_certificate /etc/letsencrypt/live/taiga.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/taiga.example.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/dhparam.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

}

Stellen Sie sicher, dass Sie den Domänennamen und den Pfad zu den SSL-Zertifikaten ändern.

Jetzt können Sie den Nginx-Webserver neu starten und aktivieren, dass er beim Start automatisch gestartet wird.

sudo systemctl restart nginx
sudo systemctl status nginx

Korrigieren Sie abschließend den Besitz und die Berechtigung für Taiga-Dateien.

sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/

Fazit

Sie können jetzt auf die Taiga-Installation zugreifen, indem Sie auf gehen https://taiga.example.com. Melden Sie sich mit dem ursprünglichen Administratorkonto mit dem Benutzernamen " admin" und dem Kennwort " 123123" an. Ihre Installation ist jetzt produktionsbereit. Erstellen Sie zunächst ein neues Projekt oder bewerten Sie das Produkt. Wenn Sie bereits ein Projekt auf Github, Jira oder Trello verwalten, können Sie die Projekte mithilfe der Importeure problemlos in Taiga importieren .



Leave a Comment

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist

ReactOS: Ist das die Zukunft von Windows?

ReactOS: Ist das die Zukunft von Windows?

ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.