Comment installer loutil de gestion de projet Taiga sur CentOS 7

Taiga est une application gratuite et open source pour la gestion de projet. Contrairement à d'autres outils de gestion de projet, Taiga utilise une approche agile incrémentielle pour gérer le développement du projet. Taiga est une application très puissante et entièrement personnalisable. Le backend de Taiga est écrit en Python en utilisant le framework Django. Le frontend est écrit en JavaScript en utilisant les frameworks CoffeeScript et AngularJS. Taiga comprend des fonctionnalités telles que la collaboration de projet, le tableau Kanban, le suivi des bogues, les rapports, le suivi du temps, les backlogs, le wiki et plus encore.

Conditions préalables

  • Une instance de serveur Vultr CentOS 7 avec au moins 1 Go de RAM.
  • Un utilisateur sudo .

Dans ce didacticiel, nous utiliserons taiga.example.comle nom de domaine pointé vers le serveur. Remplacez toutes les occurrences de taiga.example.compar votre nom de domaine réel.

Mettez à jour votre système de base à l'aide du guide Comment mettre à jour CentOS 7 . Une fois votre système mis à jour, installez PostgreSQL.

Installer PostgreSQL

PostgreSQL est un système de base de données relationnelle objet connu pour sa stabilité et sa vitesse. Taiga utilise PostgreSQL pour stocker sa base de données. Ajoutez le référentiel PostgreSQL dans le système.

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

Installez le serveur de base de données PostgreSQL.

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

Initialisez la base de données.

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

Démarrez le serveur PostgreSQL et activez-le pour démarrer automatiquement au démarrage.

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

Modifiez le mot de passe de l'utilisateur PostgreSQL par défaut.

sudo passwd postgres

Connectez-vous en tant qu'utilisateur PostgreSQL.

sudo su - postgres

Créez un nouvel utilisateur PostgreSQL pour Taiga.

createuser taiga 

PostgreSQL fournit le psqlshell pour exécuter des requêtes sur la base de données. Basculez vers le shell PostgreSQL.

psql

Définissez un mot de passe pour l'utilisateur nouvellement créé pour la base de données Taiga.

ALTER USER taiga WITH ENCRYPTED password 'DBPassword';

Remplacez-le DBPasswordpar un mot de passe sécurisé. Créez une nouvelle base de données pour l'installation de la taïga.

CREATE DATABASE taiga OWNER taiga;

Sortez du psqlshell.

\q

Passez à l' sudoutilisateur.

exit

Installez Python 3

Python 2.7 est préinstallé sur un serveur CentOS 7, mais Taiga nécessite Python version 3.4 ou ultérieure.

Nous allons installer Python version 3.6 à partir des sources. Installez les outils de compilation et le compilateur requis.

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++

Téléchargez le code source Python.

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

Extrayez et configurez l'installation Python.

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

Effectuez une installation alternative.

sudo make altinstall

Remarque : les installations alternatives installent Python 3.6 sans remplacer la version par défaut de Python. Si vous remplacez le Python par défaut dans CentOS 7, il peut casser le YUMgestionnaire de référentiel.

Vous pourrez maintenant vérifier sa version.

python3.6 -V

Vous devriez voir ce qui suit.

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

Installez Python Virtual Environment à l'aide de pip.

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

L'environnement virtuel Python est utilisé pour créer un environnement virtuel isolé pour un projet Python. Un environnement virtuel contient ses propres répertoires d'installation et ne partage pas les bibliothèques avec les environnements virtuels globaux et autres.

Installer RabbitMQ

Taiga utilise RabbitMQ pour traiter la file d'attente de messages. RabbitMQ nécessite que les bibliothèques Erlang fonctionnent. Installez Erlang.

sudo yum -y install erlang

Importez la clé de signature RabbitMQ GPG.

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

Installez RabbitMQ.

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

Démarrez et activez le serveur RabbitMQ.

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

Ajoutez l'utilisateur RabbitMQ et vhost. Fournissez également l'autorisation à l'utilisateur sur l'hôte.

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

Assurez-vous de remplacer StrongMQPasswordpar un mot de passe sécurisé.

Installer Nodejs

Node.js version 7 ou ultérieure est requis pour compiler le frontend de la taïga. Ajoutez le référentiel Node.js version 8.

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

Installez Node.js et l' pwgenutilitaire.

sudo yum install -y nodejs pwgen

pwgensera utilisé plus tard pour générer une chaîne secrète forte. Installez CoffeeScript, car il sera utilisé pour compiler des fichiers Taiga écrits avec le framework CoffeeScript.

sudo npm install -g coffee-script gulp

Installer la taïga backend

Ajoutez un nouvel utilisateur système pour Taiga pour vous assurer que les processus Taiga s'exécutent en tant qu'utilisateur non privilégié.

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

Remarque : à partir de maintenant, toutes les commandes doivent être exécutées en tant qu'utilisateur non privilégié taigajusqu'à ce que vous soyez invité à revenir à l' sudoutilisateur.

Créez un nouveau répertoire pour stocker les fichiers journaux.

mkdir -p ~/logs

Clonez le référentiel backend Taiga de GitHub et extrayez la dernière branche stable.

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

Configurez virtualenvwrapperpour utiliser Python 3.6 au lieu du Python par défaut.

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

Enfin, sourcez le ~/.bashrcfichier.

source ~/.bashrc

Créez maintenant un nouvel environnement virtuel pour Taiga en utilisant Python 3.6.

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

Installez les dépendances Python requises à l'aide de pip.

pip3.6 install -r requirements.txt

Remplissez la base de données avec les données initiales nécessaires.

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

Les commandes ci-dessus écrivent des données dans la base de données PostgreSQL. Taiga envoie également des données de démonstration ou des échantillons qui peuvent être utiles pour évaluer le produit. Si vous souhaitez installer les exemples de données, exécutez ce qui suit.

python3.6 manage.py sample_data

Remarque : l' installation des exemples de données est facultative et vise uniquement à évaluer le produit.

Avant de créer le fichier de configuration pour le backend de la taïga, nous devons générer une chaîne secrète. Cette chaîne sera utilisée pour crypter les données de session.

Générez une chaîne aléatoire de 64 caractères.

pwgen -s -1 64

Vous devriez voir la sortie comme une chaîne aléatoire.

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

Créez un nouveau fichier de configuration pour le backend de la taïga.

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

Remplissez le fichier avec le code suivant.

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"

Assurez-vous de remplacer l'exemple de nom de domaine par le nom réel dans le code ci-dessus. Remplacez également Generated_Secret_Keypar la clé secrète réelle et StrongMQPasswordpar le mot de passe réel pour l'utilisateur de la file d'attente de messages de la taïga. Si vous avez un serveur SMTP prêt et que vous souhaitez utiliser immédiatement les fonctions d'envoi d'e-mails, vous pouvez décommenter les options d'e-mail et définir les valeurs appropriées. Si vous n'avez pas de serveur de messagerie prêt, vous pouvez ignorer la configuration de la fonction de messagerie pour l'instant et la définir plus tard dans ce fichier de configuration.

Si vous souhaitez activer la connexion GitHub, créez une application dans GitHub et fournissez l'ID client API et le secret client.

Pour vérifier immédiatement si le backend Taiga peut être démarré, exécutez le serveur Django intégré.

workon taiga
python manage.py runserver

Vous verrez la sortie suivante si le serveur a démarré avec succès.

(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.

Pour vérifier si l'API est accessible, ouvrez une autre session de terminal et exécutez ce qui suit.

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

Vous verrez une sortie similaire renvoyée par l'appel d'API.

[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",

Arrêtez le serveur principal de la taïga en appuyant sur " Ctrl + C" et désactivez l'environnement virtuel.

deactivate

Installer le frontend

Le frontend de la taïga est le composant de la taïga qui sert l'interface utilisateur Web. Clonez le référentiel frontal de la taïga à partir de Github et extrayez la dernière branche stable.

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

Créez un nouveau fichier de configuration pour le frontend de la taïga.

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

Remplissez le fichier avec ceci.

{
    "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
}

Assurez-vous de remplacer le exampledomaine par le domaine réel. Vous pouvez également modifier la langue par défaut et d'autres paramètres dans la configuration ci-dessus.

Installer les événements de la taïga

Outre le frontend et le backend, nous devons également installer les événements de la taïga. Les événements de la taïga est un serveur de socket Web, et il permet au frontend de la taïga d'afficher les changements en temps réel dans les modules tels que le backlog, Kanban et plus encore. Il utilise le serveur RabbitMQ pour le traitement des messages.

Clonez le référentiel des événements de la taïga depuis Github.

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

Installez les dépendances Node.js à l'aide de npm.

npm install

Créez un nouveau fichier de configuration pour les événements de la taïga.

nano ~/taiga-events/config.json

Remplissez le fichier avec les éléments suivants.

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

Remplacez Generated_Secret_Keypar la clé secrète réelle de 64 caractères que vous avez générée dans le passé. La clé secrète doit être exactement la même que la clé que vous avez fournie dans le fichier de configuration du backend de la taïga. En outre, mettez à jour le StrongMQPasswordavec le mot de passe réel pour l'utilisateur de la file d'attente de messages Taiga.

Configurer le cirque

Circus est un gestionnaire de processus pour les applications Python. Nous utiliserons Circus pour gérer le backend et les événements de la taïga.

Revenez à l' sudoutilisateur.

exit

Remarque : à partir de maintenant, vous devrez exécuter les commandes à l'aide de l' sudoutilisateur.

Installez Circus à l'aide de pip.

sudo pip3.6 install circus

Créez de nouveaux répertoires pour stocker les configurations de cirque.

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

Créez le fichier de configuration par défaut pour Circus.

sudo nano /etc/circus/circus.ini

Remplissez le fichier avec la configuration suivante.

[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

Créez un nouveau fichier de configuration Circus pour exécuter le backend Taiga.

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

Remplissez le fichier avec les éléments suivants.

[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

Créez une nouvelle configuration de cirque pour exécuter les événements de la taïga.

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

Remplissez le fichier avec les éléments suivants.

[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

Nous devons maintenant créer un systemdfichier de service pour exécuter Circus. L'utilisation systemdgarantit que Circus démarre automatiquement lors du redémarrage et des échecs.

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

Remplissez le fichier.

[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

Démarrez Circus et activez le démarrage automatique au démarrage.

sudo systemctl start circus
sudo systemctl enable circus

Vérifiez l'état du cirque.

circusctl status

Vous verrez la sortie suivante.

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

Maintenant, nous avons installé et exécuté Taiga avec succès. Avant de pouvoir l'utiliser, nous devons exposer l'installation à l'aide de n'importe quel serveur Web de production.

Installer Nginx en tant que proxy inverse

Nous utiliserons le serveur Web Nginx comme proxy inverse pour servir l'application aux utilisateurs. Nous obtiendrons et installerons également des certificats SSL auprès de Let's Encrypt.

Installez Nginx et Certbot. Certbot est le client officiel de délivrance des certificats pour Let's Encrypt CA.

sudo yum -y install nginx certbot

Ajustez vos paramètres de pare-feu pour autoriser la norme HTTPet les HTTPSports à travers le pare-feu car Certbot doit établir une connexion HTTP pour vérifier l'autorité de domaine.

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

Remarque : Pour obtenir des certificats de Let's Encrypt CA, vous devez vous assurer que le domaine pour lequel vous souhaitez générer les certificats est dirigé vers le serveur. Sinon, apportez les modifications nécessaires aux enregistrements DNS de votre domaine et attendez que le DNS se propage avant de refaire la demande de certificat. Certbot vérifie l'autorité de domaine avant de fournir les certificats.

Utilisez maintenant le serveur Web intégré dans Certbot pour générer les certificats pour votre domaine.

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

Les certificats générés sont susceptibles d'être stockés dans le /etc/letsencrypt/live/taiga.example.com/répertoire. Le certificat SSL sera conservé sous la forme fullchain.pemet la clé privée sera enregistrée sous privkey.pem.

Les certificats Let's Encrypt expirent dans 90 jours, il est donc recommandé de configurer le renouvellement automatique des certificats à l'aide des tâches Cron. Cron est un service système utilisé pour exécuter des tâches périodiques.

Ouvrez le fichier de tâche cron.

sudo crontab -e

Ajoutez la ligne suivante.

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

Le travail cron ci-dessus s'exécutera quotidiennement à minuit. Si le certificat doit expirer, il renouvellera automatiquement les certificats.

Générez un Diffie-Hellmanparamètre fort . Il fournit une couche de sécurité supplémentaire pour l'échange de données entre l'hôte et le serveur.

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

Créez un nouveau bloc serveur Nginx pour servir le frontend de la taïga.

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

Remplissez le fichier avec les éléments suivants.

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;

}

Veillez à modifier le nom de domaine et le chemin d'accès aux certificats SSL.

Vous pouvez maintenant redémarrer le serveur Web Nginx et l'activer pour démarrer automatiquement au démarrage.

sudo systemctl restart nginx
sudo systemctl status nginx

Enfin, corrigez la propriété et l'autorisation des fichiers Taiga.

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

Conclusion

Vous pouvez maintenant accéder à l'installation de la taïga en allant sur https://taiga.example.com. Connectez-vous en utilisant le compte administrateur initial avec le nom d'utilisateur " admin" et le mot de passe " 123123". Votre installation est maintenant prête pour une utilisation en production. Commencez par créer un nouveau projet ou évaluer le produit. Si vous gérez déjà un projet sur Github, Jira ou Trello, vous pouvez facilement importer les projets dans Taiga en utilisant les importateurs .



Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.