Cómo instalar el sistema de gestión de proyectos Taiga en Ubuntu 20.04

Interfaz gr√°fica de usuario de Taiga

Taiga es una herramienta de administraci√≥n de proyectos gratuita, de c√≥digo abierto, simple pero poderosa para nuevas empresas, desarrolladores √°giles y dise√Īadores. Es compatible con equipos que trabajan Agile en los marcos Scrum y Kanban. El frontend est√° escrito en JavaScript, mientras que el backend est√° escrito en Python y Django. Es una aplicaci√≥n muy poderosa y totalmente personalizable y puede manejar proyectos simples y complejos para desarrolladores y equipos. Se puede integrar f√°cilmente con muchos servicios, incluidos Kanban, Scrum, Talky.io y Appear.in.

En este tutorial, le mostraremos cómo instalar la herramienta de administración de proyectos Taiga en el servidor Ubuntu 20.04.

requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio v√°lido apuntado con la IP de su servidor.
  • Se configura una contrase√Īa de root en el servidor.

Empezando

Primero, actualice los paquetes de su sistema a la √ļltima versi√≥n con el siguiente comando:

apt-get update -y

Una vez que todos los paquetes estén actualizados, instale otras dependencias requeridas para Taiga ejecutando el siguiente comando:

apt-get install git gnupg2 pwgen automake wget curl gettext python3 virtualenvwrapper python3-dev python3-pip python3-dev libssl-dev tmux build-essential libgdbm-dev binutils-doc autoconf flex gunicorn bison libjpeg-dev libzmq3-dev libfreetype6-dev zlib1g-dev libncurses5-dev libtool libxslt-dev libxml2-dev libffi-dev

A continuación, deberá configurar un nombre de host completo para su sistema. Puede configurarlo con el siguiente comando:

hostnamectl set-hostname taiga.example.com

A continuación, deberá vincular su nombre de host con su dirección IP. Puedes hacerlo editando el archivo /etc/hosts:

nano /etc/hosts

Agregue las siguientes líneas:

your-server-ip taiga.example.com

Guarde y cierre el archivo cuando haya terminado.

Instalar Node.js

A continuaci√≥n, deber√° instalar Node.js en su sistema. De forma predeterminada, la √ļltima versi√≥n de Node.js no est√° disponible en el repositorio predeterminado de Ubuntu 20.04. Por lo tanto, deber√° agregar el repositorio Node.js a su sistema. Puedes agregarlo con el siguiente comando:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Una vez agregado el repositorio, instale la √ļltima versi√≥n de Node.js con el siguiente comando:

apt-get install nodejs -y

Después de instalar Node.js, verifique la versión instalada de Node.js con el siguiente comando:

node -v

Deberías obtener el siguiente resultado:

v12.19.0

Instalar y configurar PostgreSQL

Taiga utiliza el servidor PostgreSQL como base de datos. Por lo tanto, deber√° instalarlo en su sistema. Primero, agregue la clave GPG de PostgreSQL con el siguiente comando:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

A continuación, agregue el repositorio de PostgreSQL con el siguiente comando:

echo "deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list

A continuaci√≥n, actualice el repositorio e instale la √ļltima versi√≥n de PostgreSQL con el siguiente comando:

apt-get update -y
apt-get install postgresql -y

A continuaci√≥n, cambie la contrase√Īa de PostgreSQL con el siguiente comando:

passwd postgres

Deberías obtener el siguiente resultado:

New password: 
Retype new password: 
passwd: password updated successfully

A continuación, cambie el usuario a postgres y cree un usuario para Taiga:

su - postgres
[email protected]:~$ createuser taiga

A continuación, inicie sesión en el shell de PostgreSQL con el siguiente comando:

[email protected]:~$ psql

Producción:

psql (13.0 (Ubuntu 13.0-1.pgdg20.04+1))
Type "help" for help.

Una vez que inicie sesión, cree un usuario y una base de datos con el siguiente comando:

postgres=# ALTER USER taiga WITH ENCRYPTED password 'yourpassword';
postgres=# CREATE DATABASE taiga OWNER taiga;

A continuación, salga del shell de PostgreSQL y del usuario con el siguiente comando:

postgres=# \q
[email protected]:~$ exit

Instalar RabbitMQ y Redis

Taiga usa RabbitMQ como intermediario de mensajes y Redis para el almacenamiento en caché. Por lo tanto, deberá instalar ambos paquetes en su sistema. Puede instalar ambos paquetes con el siguiente comando:

apt-get install rabbitmq-server redis-server -y

A continuación, cree un nuevo usuario y host virtual para RabbitMQ con el siguiente comando:

rabbitmqctl add_user taiga yourpassword
rabbitmqctl add_vhost taiga
rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar y configurar el backend de Taiga

Primero, crea un usuario separado para Taiga con el siguiente comando:

adduser taiga

Luego, agregue el usuario Taiga al grupo sudo usando el siguiente comando:

adduser taiga sudo

A continuación, cambie el usuario a taiga y cree un directorio para almacenar registros de taiga:

su - taiga
mkdir -p ~/logs

A continuación, descargue el backend de Taiga desde el repositorio de Git con el siguiente comando:

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

A continuación, cambie el directorio al directorio descargado y consulte la rama más reciente:

cd taiga-back
git checkout stable

A continuación, active el comando mkvirtualenv con el siguiente comando:

nano ~/.bashrc

Agregue la siguiente línea:

source '/usr/share/virtualenvwrapper/virtualenvwrapper.sh'

Active el nuevo perfil con el siguiente comando:

source ~/.bashrc

A continuación, cree un entorno virtual de Python para Taiga:

mkvirtualenv -p /usr/bin/python3 taiga_venv

A continuación, instale todas las dependencias requeridas con el siguiente comando:

pip3 install -r requirements.txt

A continuación, migre y cargue los datos con el siguiente comando:

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

A continuación, deberá editar el archivo local.py y definir la configuración de su aplicación y base de datos:

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

Agregue las siguientes líneas:

from .common import *

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

SECRET_KEY = "OQOEJNSJIQHDBQNSUQEJSNNANsqQPAASQLSMSOQND"

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

Guarde y cierre el archivo, luego inicie el servidor back-end de Taiga con el siguiente comando:

workon taiga_venv
python manage.py runserver

Una vez que el servidor se haya iniciado correctamente, debería obtener el siguiente resultado:

System check identified no issues (0 silenced).
November 02, 2020 - 09:24:41
Django version 2.2.16, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Presione CTRL + C para detener el servidor.

A continuación, desactive el entorno virtual con el siguiente comando:

deactivate

Instalar y configurar Taiga Forntend

Primero, cambie el usuario a Taiga y descargue la √ļltima versi√≥n de la interfaz de Taiga desde el repositorio de Git:

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

Cambie el directorio al directorio descargado y consulte la rama estable m√°s reciente con el siguiente comando:

cd taiga-front-dist
git checkout stable

A continuación, copie el archivo de configuración de muestra con el siguiente comando:

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

A continuación, edite el archivo de configuración con el siguiente comando:

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

Cambia las siguientes líneas:

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

Guarde y cierre el archivo cuando haya terminado.

Instalar y configurar el evento Taiga

A continuaci√≥n, vaya a su directorio de inicio y descargue la √ļltima versi√≥n del evento Taiga con el siguiente comando:

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

A continuación, cambie el directorio al directorio descargado e instale todos los módulos NPM con el siguiente comando:

cd taiga-events
npm install

A continuación, copie el archivo de configuración de muestra con el siguiente comando:

cp config.example.json config.json

A continuación, edite el archivo config.json y configure la URL de rabbitmq y la clave secreta:

nano config.json

Agregue/modifique las siguientes líneas:

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

Guarde y cierre el archivo, luego cierre la sesión del usuario Taiga con el siguiente comando:

exit

Crear un archivo de servicio de Systemd

A continuación, deberá crear un archivo de servicio systemd para Taiga y el evento Taiga. Primero, cree un archivo de servicio systemd para el evento Taiga con el siguiente comando:

nano /etc/systemd/system/taiga_events.service

Agregue las siguientes líneas:

[Unit]
Description=taiga_events
After=network.target

[Service]
User=taiga
WorkingDirectory=/home/taiga/taiga-events
ExecStart=/bin/bash -c "node_modules/coffeescript/bin/coffee index.coffee"
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

Guarde y cierre el archivo, luego vuelva a cargar el servicio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio de eventos de Taiga y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start taiga_events
systemctl enable taiga_events

A continuación, cree un archivo de servicio systemd para Taiga con el siguiente comando:

nano /etc/systemd/system/taiga.service

Agregue las siguientes líneas:

[Unit]
Description=taiga_back
After=network.target

[Service]
User=taiga
Environment=PYTHONUNBUFFERED=true
WorkingDirectory=/home/taiga/taiga-back
ExecStart=/home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 -b 127.0.0.1:8001 taiga.wsgi
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

Guarde y cierre el archivo, luego vuelva a cargar el servicio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio Taiga y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start taiga
systemctl enable taiga

A continuación, verifique el estado del evento Taiga y el servicio Taiga con el siguiente comando:

systemctl status taiga_events taiga

Debería ver el siguiente resultado:

? taiga_events.service - taiga_events
     Loaded: loaded (/etc/systemd/system/taiga_events.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-11-02 09:30:21 UTC; 46s ago
   Main PID: 26383 (node)
      Tasks: 7 (limit: 2353)
     Memory: 15.2M
     CGroup: /system.slice/taiga_events.service
             ??26383 node node_modules/coffeescript/bin/coffee index.coffee

Nov 02 09:30:21 taiga.example.com systemd[1]: Started taiga_events.

? taiga.service - taiga_back
     Loaded: loaded (/etc/systemd/system/taiga.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-11-02 09:30:55 UTC; 13s ago
   Main PID: 26478 (gunicorn)
      Tasks: 5 (limit: 2353)
     Memory: 266.4M
     CGroup: /system.slice/taiga.service
             ??26478 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26494 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26495 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26496 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >
             ??26497 /home/taiga/.virtualenvs/taiga_venv/bin/python /home/taiga/.virtualenvs/taiga_venv/bin/gunicorn --workers 4 --timeout 60 >

Nov 02 09:30:55 taiga.example.com gunicorn[26495]: [2020-11-02 09:30:55 +0000] [26495] [INFO] Booting worker with pid: 26495
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: [2020-11-02 09:30:55 +0000] [26496] [INFO] Booting worker with pid: 26496
Nov 02 09:30:55 taiga.example.com gunicorn[26494]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26495]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: Trying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: 2020-11-02 09:30:55 +0000] [26497] [INF
Nov 02 09:30:55 taiga.example.com gunicorn[26495]: 2
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: 2
Nov 02 09:30:55 taiga.example.com gunicorn[26496]: rying import local.py settings...
Nov 02 09:30:55 taiga.example.com gunicorn[26497]: rying import local.py settings...

Configurar Nginx como proxy inverso

Es una buena idea configurar Nginx como un proxy inverso para Taiga. Primero, instale Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado, cree un archivo de configuración de host virtual Nginx con el siguiente comando:

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

Agregue las siguientes líneas:

server {
    listen 80;
    server_name taiga.example.com;

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

    access_log /home/taiga/logs/nginx.access.log;
    error_log /home/taiga/logs/nginx.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;
    }

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

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

Guarde y cierre el archivo, luego reinicie Nginx para aplicar los cambios:

systemctl restart nginx

Acceder a la interfaz de usuario web de Tails

Ahora, abra su navegador web y acceda a la interfaz web de Taiga usando la URL http://taiga.ejemplo.com. Ser√° redirigido a la siguiente p√°gina:

Interfaz gr√°fica de usuario de Taiga

Haga clic en el Acceso botón. Será redirigido a la siguiente página:

Inicio de sesión

Proporcione el nombre de usuario predeterminado como administraci√≥n y la contrase√Īa como 123123 el clic en el ACCESO bot√≥n. Deber√≠a ver el tablero de Taiga en la siguiente p√°gina:

Tablero Taiga

Conclusión

¡Felicidades! Ha instalado y configurado con éxito la herramienta de administración de proyectos Taiga con Nginx en Ubuntu 20.04. Ahora puede implementar Taiga en su entorno de desarrollo y comenzar a trabajar en él.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *