Installeer Taiga.io Project Management Software op CentOS 7

Taiga.io is een open bron project management systeem voor agile ontwikkelaars, ontwerpers, en project managers. Het is een mooi project management gereedschap dat zowel eenvoudige als complexe projecten aankan voor startups, software ontwikkelaars enz.

Het Taiga platform heeft drie hoofdcomponenten, en elke component heeft zijn eigen afhankelijkheden.

  1. Taiga-back: Backend van de toepassing die een API biedt. Geschreven in Python en Django.
  2. Taiga-front-dist: Taiga Frontend geschreven in AngularJS en CoffeeScript.
  3. Taiga-events: Taiga WebSocket server om real-time veranderingen in de apps te laten zien. En het gebruik van RabbitMQ als message broker.

In deze zelfstudie laat ik je stap-voor-stap zien hoe je de Taiga.io project management tools installeert op de CentOS 7 server. We leren ook hoe je CentOS 7 server instelt en configureert voor de installatie van Taiga.io.

Vereisten

  1. CentOS 7
  2. Root rechten

Wat we zullen doen

  1. Pakketten installeren
  2. PostgreSQL installeren en configureren
  3. Taiga gebruiker toevoegen
  4. Configureer Taiga Terug
  5. Taiga voorkant configureren
  6. Configureer Taiga Gebeurtenissen
  7. Configureer Circus Procesbeheer
  8. Configureer Nginx Virtuele Host voor Taiga.io
  9. Geef Nginx toegang tot de Taiga frontend
  10. Testen van

Stap 1 – Pakketten installeren

Voordat we alle Taiga.io componenten installeren, moeten we het systeem voorbereiden door enkele pakketten te installeren. In deze eerste stap zullen we pakketten installeren die nodig zijn voor alle Taiga componenten en modules, waaronder Nginx, RabitMQ, Redis enz.

– Afhankelijkheden installeren

We hebben ‘Development Tools’ voor CentOS 7 nodig, die gebruikt zullen worden voor het compileren van enkele python modules.

Installeer de vereiste pakketten met het yum commando hieronder.

sudo yum -y install gcc gcc-c++ make openssl-devel binutils autoconf flex bison libjpeg-devel freetype-devel zlib-devel perl-ZMQ-LibZMQ3 gdbm-devel ncurses-devel automake libtool libffi-devel curl git tmux gettext

– Installeer de EPEL Repository

Nu moeten we de EPEL (Extra Packages for Enterprise Linux) repository installeren. Die is nodig voor de installatie van de Nginx webserver, RabbitMQ en Redis.

Installeer de EPEL Repository op het CentOS 7 systeem met het volgende commando:

sudo yum -y install epel-release

– Installeer Python

Taiga.io heeft Python 3.5 nodig voor de installatie. We zullen een repository van derden – ‘ius community’ – gebruiken om Python 3.5 te installeren.

Voeg de ‘ius community’ repository op de volgende manier toe.

sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm

Installeer nu Python 3.5 met het volgende yum commando.

sudo yum -y install python35u python35u-pip python35u-devel python-devel python-pip python-virtualenvwrapper libxml2-devel libxslt-devel

– Installeer Nginx

Taiga.io is een hulpmiddel voor webtoepassingen, en het draait onder de webserver. En voor deze gids zullen we Nginx als webserver gebruiken.

Installeer Nginx uit de EPEL repository met het onderstaande yum commando.

sudo yum -y install nginx

Nadat de installatie voltooid is, start je de service en schakel je hem in om te starten bij het opstarten van het systeem.

systemctl start nginx
systemctl enable nginx

Controleer nu de open poorten met het netstat commando.

netstat -plntu

En zorg ervoor dat je de HTTP poort 80 op de lijst krijgt zoals hieronder.

Installeer een Check nginx webserver

– Installeer Redis en RabbitMQ

Dit is optioneel, want je kunt Taiga.io nog steeds draaien zonder deze pakketten. In principe zullen de Redis en RabbitMQ pakketten gebruikt worden door taiga-events.

Installeer Redis en RabbitMQ uit de EPEL repository met het yum commando hieronder.

yum -y install rabbitmq-server redis

Als de installatie voltooid is, start dan zowel de Redis als de RabbitMQ diensten, en zet ze aan om te starten bij het opstarten van het systeem.

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

systemctl start redis
systemctl enable redis

Installeer Redis en RabbitMQ

Vervolgens moeten we een nieuwe gebruiker en virtuele host aanmaken met de naam ‘taiga’ voor de RabbitMQ, en die zal gebruikt worden voor ‘taiga-events’.

Voer de volgende commando’s uit om nieuwe gebruiker en vhost met de naam ‘taiga’ aan te maken met wachtwoord ‘aqwe123’, en stel daarna de toestemming in voor de ‘taiga’ gebruiker.

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

RabbitMQ

– Installeer Nodejs

Node is nodig voor ‘taiga-events’ – voeg de nodejs nodesource repository toe en installeer het met het yum commando.

curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
sudo yum -y install nodejs

Alle basispakketten die nodig zijn voor de installatie van Taiga.io zijn op het systeem geïnstalleerd.

Stap 2 – Installeer en configureer PostgreSQL

Taiga.io is een webapplicatie gebaseerd op het Python Django web framework, en het gebruikt PostgreSQL als databank. We hebben PostgreSQL versie 9.5 nodig voor de installatie van Taiga.io.

Voeg de PostgreSQL 9.5 repository toe aan het systeem.

sudo rpm -Uvh http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

Installeer nu PostgreSQL 9.5 met het yum commando hieronder.

sudo yum -y install postgresql95 postgresql95-devel postgresql95-contrib postgresql95-docs postgresql95-server

Nadat de installatie voltooid is, moeten we de PostgreSQL databank initialiseren.

sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb

Start nu de PostgreSQL service en zet hem aan om telkens bij het opstarten van het systeem te starten.

systemctl start postgresql-9.5
systemctl enable postgresql-9.5

Installeer PostgreSQL

Vervolgens moeten we een nieuwe database maken voor de installatie van Taiga.io. We moeten een nieuwe database en een gebruiker met de naam ‘taiga’ aanmaken.

Log in als de ‘postgres’ gebruiker.

su - postgres

Maak nu een nieuwe database en gebruiker voor Taiga.io met de volgende commando’s.

createuser taiga
createdb taiga -O taiga

Maak postgres gebruiker en databank aan

Nieuwe PostgreSQL databank voor Taiga.io installatie is aangemaakt.

Stap 3 – Taiga gebruiker toevoegen

In deze stap maken we een nieuwe systeemgebruiker en groep met de naam ‘taiga’, en voegen die dan toe aan de wielgroep voor toegang tot sudo commando’s.

Gebruik het ‘useradd’ commando hieronder om de ‘taiga’ gebruiker en groep aan te maken.

useradd -U -m -s /bin/bash taiga
passwd taiga

Voeg nu de ‘taiga’ gebruiker toe aan de ‘wheel’ groep.

usermod -a -G wheel taiga

Test de ‘taiga’ gebruiker op sudo toegang.

su - taiga
sudo su

Typ je wachtwoord en controleer of de ‘taiga’ gebruiker root-rechten krijgt.

Voeg Taiga gebruiker toe

Stap 4 – Configureer Taiga-back

Taiga-back is de backend van Taiga.io die een API biedt aan de Taiga frontend. Het is geschreven in Python en Django Web Framework.

In deze stap installeren en configureren we de taiga component ‘taiga-back’.

Meld je aan bij de ‘taiga’ gebruiker en download de ‘taiga-back’ broncode van GitHub.

su - taiga
git clone https://github.com/taigaio/taiga-back.git taiga-back

Ga nu naar de ‘taiga-back’ directory en verander de branch in de ‘stable’ branch.

cd taiga-back
git checkout stable

Voor we verder gaan, moeten we het virtualenv pakket bijwerken.

sudo pip install --upgrade virtualenv

Maak vervolgens een nieuwe python omgeving ‘taiga’ met het mkvirtualenv commando.

mkvirtualenv -p /usr/bin/python3.5 taiga

Nieuwe virtualenv voor ‘taiga-back’ is aangemaakt.

Voordat we alle modules voor taiga-back installeren, moeten we een nieuwe link maken voor het ‘pg_config’ commando naar de ‘/usr/bin’ directory.

sudo ln -s /usr/pgsql-9.5/bin/pg_config /usr/bin/pg_config

Installeer nu alle python modules die nodig zijn voor de ‘taiga-back’ met de onderstaande commando’s.

workon taiga
pip install -r requirements.txt

Nadat de installatie voltooid is, moeten we de database vullen met de eerste basisgegevens.

Voer alle volgende commando’s uit.

python manage.py migrate --noinput
python manage.py loaddata initial_user
python manage.py loaddata initial_project_templates
python manage.py compilemessages
python manage.py collectstatic --noinput

Deze commando’s zullen automatisch een beheerdersaccount‘admin‘ aanmaken met wachtwoord‘123123‘.

Maak vervolgens met vim een nieuwe configuratie voor ‘taiga-back’.

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

Plak er de volgende configuratie in.

from .common import *

MEDIA_URL = “http://taiga.hakase-labs.co/media/”
STATIC_URL = “http://taiga.hakase-labs.co/static/”
SITES[“front”][“scheme”] = “http”
SITES[“front”][“domain”] = “taiga.hakase-labs.co”

SECRET_KEY = “theveryultratopsecretkey”

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:[email protected]: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 = “localhost”
#EMAIL_HOST_USER = “”
#EMAIL_HOST_PASSWORD = “”
#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”

Bewaar en sluit af.

Opmerking:

  • Verander de ‘MEDIA_URL’ en ‘STATIC_URL’ met je eigen domeinnaam.
  • Verander de ‘SECRET_KEY’ met je eigen zeer geheime sleutel.
  • Verander de EVENTS_PUSH_BACKEND_OPTIONS wachtwoord waarde in je eigen RabbitMQ waarde. Voor deze gids gebruiken we wachtwoord ‘aqwe123’.

Test nu ‘taiga-back’ met het onderstaande commando.

workon taiga
python manage.py runserver 0.0.0.0:8000

Het commando zal taiga-back uitvoeren onder het publieke IP van de server met poort 8000.

Start TaigaIO

Open de webbrowser en bezoek het volgende adres.

http://192.168.33.10:8000/api/v1/

En je krijgt de ‘taiga-back’ API met JSON formaat zoals hieronder.

TaigaIO API

De ‘taiga-back’ installatie en configuratie zijn voltooid.

Stap 5 – Configureer Taiga frontend

In deze stap zullen we de taiga frontend downloaden en configureren. De Frontend zal alle taiga interfaces afhandelen.

Log in op de taiga gebruiker.

su - taiga

Download de ‘Taiga frontend’ broncode met git.

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

Ga naar de ‘taiga-front-dist’ directory en verander de branch in ‘stable’.

cd taiga-front-dist
git checkout stable

Kopieer het standaard configuratiebestand en bewerk het met vim.

cp ~/taiga-front-dist/dist/conf.example.json ~/taiga-front-dist/dist/conf.json
vim ~/taiga-front-dist/dist/conf.json

Kopieer de volgende configuratie:

{
     "api": "http://taiga.hakase-labs.co/api/v1/",
     "eventsUrl": "ws://taiga.hakase-labs.co/events",
     "debug": "true",
     "publicRegisterEnabled": true,
     "feedbackEnabled": true,
     "privacyPolicyUrl": null,
     "termsOfServiceUrl": null,
     "maxUploadFileSize": null,
     "contribPlugins": []
 }

Bewaar en sluit af.

De ‘Taiga frontend’ configuratie is voltooid.

Stap 6 – Configureer Taiga-events

Taiga-events is een WebSocket server waarmee je real-time veranderingen in het Taiga.io Dashboard kunt tonen, en het gebruikt RabbitMQ als message broker. In deze stap downloaden en configureren we ‘taiga-events’.

Log in op de ‘taiga’ gebruiker.

su - taiga

Download de ‘taiga-events’ broncode en ga naar de directory.

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

Nu moeten we alle javascript bibliotheken die nodig zijn voor ‘taiga-events’ downloaden en installeren met het npm commando op de volgende manier.

npm install
sudo npm install -g coffee-script

Opmerking: We moeten het ‘koffie-script’ onder root systeem installeren.

Kopieer vervolgens het JSON configuratiebestand naar ‘config.json’ en bewerk het dan met vim.

cp config.example.json config.json
vim config.json

Plak er de volgende configuratie in.

{
     "url": "amqp://taiga:[email protected]:5672/taiga",
     "secret": "theveryultratopsecretkey",
     "webSocketServer": {
         "port": 8888
     }
 }

Sla op en sluit af.

Opmerking:

  • Verander de ‘url’ waarde met je eigen rabbitmq gebruiker en wachtwoord.
  • Zorg er voor dat de ‘secret’ waarde overeenkomt met de ‘SECRET_KEY’ op ‘local.py’ – het configuratiebestand van ‘taiga-back’.

De configuratie van Taiga-events is voltooid.

Stap 7 – Installeer en configureer Circus

Circus zal gebruikt worden voor het besturen en beheren van ‘taiga-back’ en ‘taiga-events’ processen. ‘taiga-events’ draait als een koffiescript, en ‘taiga-back’ draait onder Gunicorn.

In deze stap installeren we Circus handmatig vanaf de broncode.

Log in als de taiga gebruiker.

su - taiga

Download nu de circus broncode met git.

cd ~/
git clone https://github.com/circus-tent/circus.git circus

Voordat we circus op het systeem installeren, moeten we een nieuwe map maken voor de configuratie van circus.

Maak een nieuwe ‘conf’ map onder de taiga gebruiker.

mkdir -p ~/conf

En maak nieuwe circus configuratie voor Taiga.io met de naam ‘taiga.ini’.

vim ~/conf/taiga.ini

Plak er de volgende configuratie in.

[circus]
 check_delay = 5
 endpoint = tcp://127.0.0.1:5555
 pubsub_endpoint = tcp://127.0.0.1:5556
 statsd = true

[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

[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.5/site-packages

Bewaar en sluit af.

Maak nu de map voor circus logbestanden.

mkdir -p ~/logs

Ga naar de circus directory en installeer de software met root privileges.

cd ~/circus
sudo python3.5 setup.py install

Als de installatie voltooid is, zullen we circus als een dienst op het systeem instellen.

Voer het sudo commando uit en maak dan een nieuw service bestand ‘circusd.service’.

sudo su
vim /usr/lib/systemd/system/circusd.service

Plak er de volgende configuratie in.

[Unit]
 Description=circus

[Service]
ExecStart=/usr/bin/circusd /home/taiga/conf/taiga.ini

Sla op en sluit af.

Herlaad nu systemd met onderstaand commando.

systemctl daemon-reload

Controleer of er geen fout optreedt, start dan de circusd service en zet hem aan om telkens bij het opstarten van het systeem te starten.

systemctl start circusd
systemctl enable circusd

De installatie en configuratie van circus voor Taiga.io is voltooid. Controleer het met het circusctl commando hieronder.

circusctl status

En controleer of je de taiga-back en taiga-events op de circus proceslijst krijgt.

krijg de taiga-back en taiga-events op de lijst van het circusproces

Of je kunt het systemctl commando gebruiken zoals hieronder.

systemctl status circusd

Circusstatus

Stap 8 – Configureer Taiga Nginx Virtuele Host

In deze stap configureren we de Nginx virtuele host voor Taiga.io. We maken een nieuw virtuele host bestand aan onder de ‘conf.d’ directory voor onze Taiga.io installatie.

Ga naar de nginx configuratie directory en maak een nieuw bestand ‘taiga.conf’ aan onder de ‘conf.d’ directory.

cd /etc/nginx/
vim conf.d/taiga.conf

Plak er de volgende configuratie in.

server {
    listen 80;
    server_name taiga.hakase-labs.co;

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

access_log /var/log/nginx/taiga.access.log;
error_log /var/log/nginx/taiga.error.log;

# 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;
}

# Django admin access (/admin/)
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;
}

# Taiga-events
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;
}
}

Sla op en sluit af.

Voer nu de test nginx configuratie uit en controleer of er geen fout optreedt. Herstart dan de webserver dienst.

nginx -t
systemctl restart nginx

De virtuele host configuratie voor Taiga.io is nu voltooid.

TaigaIO Nginx vhost

Stap 9 – Nginx toegang geven tot de Taiga frontend

Soms krijg je een foutmelding over de Nginx webserver die zegt dat hij de taiga-frontend bestanden niet kan benaderen – je ziet in dit geval de Nginx ‘500 Internal Server Error’.

Om dit probleem op te lossen, moeten we de eigenaar of groep van alle taiga-frontend bestanden veranderen en Nginx toegang geven tot alle bestanden.

Standaard op CentOS 7 draait de Nginx webserver onder de ‘nginx’ gebruiker en de Taiga.io installatie draait onder de ‘taiga’ gebruiker.

Het volgende is het voorbeeld van de Nginx fout waar we het over hebben.

Nginx toegang geven tot het Taiga frontend

Nginx webserver kan niet alle inhoud lezen op de ‘/home/taiga/taiga-front-dist/dist’ directory.

Controleer dit met het onderstaande commando.

sudo -u nginx stat /home/taiga/taiga-front-dist/dist

En je krijgt het resultaat ‘permission denied’.

Nu moeten we de ‘nginx’ gebruiker toevoegen aan de ‘taiga’ groep en de nginx gebruiker de vereiste permissies geven voor de taiga-front-dist directory.

Voeg ‘nginx’ gebruiker toe aan de ‘taiga’ groep.

sudo gpasswd -a nginx taiga

Geef de webserver permissies om alle inhoud op de taiga-front-dist directory te lezen.

sudo chmod g+x /home/taiga
sudo chmod g+x /home/taiga/taiga-front-dist
sudo chmod g+x /home/taiga/taiga-front-dist/dist

En herstart de Nginx webserver.

systemctl restart nginx

Stap 10 – Testen

Open je webbrowser en bezoek de domeinnaam van je Taiga installatie, de mijne ishttp://taiga.hakase-labs.co

En je zou de Taiga standaard startpagina moeten krijgen a hieronder getoond.

Ontdek projecten

Typ hier de standaard gebruiker‘admin‘ met wachtwoord‘123123‘, en klik dan op de knop ‘Login’.

Inloggen op TaigaIO

En je komt in het admin dashboard.

TaigaIO Dashboard

De installatie van Taiga.io op CentOS 7 met Nginx webserver is met succes voltooid.

Referentie