Cómo instalar el software de gestión de proyectos Taiga.io en CentOS 7

Taiga.io es un sistema de gestión de proyectos de código abierto para desarrolladores ágiles, diseñadores y gestores de proyectos. Es una hermosa herramienta de gestión de proyectos que puede gestionar tanto proyectos sencillos como complejos para startups, desarrolladores de software, etc.

La plataforma Taiga tiene tres componentes principales, y cada componente tiene sus propias dependencias.

  1. Taiga-back: Backend de la aplicación que proporciona una API. Escrito en Python y Django.
  2. Taiga-front-dist: Frontend de Taiga escrito en AngularJS y CoffeeScript.
  3. Taiga-events: Servidor WebSocket de Taiga para mostrar cambios en tiempo real en las aplicaciones. Y utilizando RabbitMQ como intermediario de mensajes.

En este tutorial, te mostraré paso a paso cómo instalar las herramientas de gestión de proyectos de Taiga.io en el servidor CentOS 7. También aprenderemos a instalar y configurar el servidor CentOS 7 para la instalación de Taiga.io.

Requisitos previos

  1. CentOS 7
  2. Privilegios de root

Qué haremos

  1. Instalar paquetes
  2. Instalar y configurar PostgreSQL
  3. Añadir Usuario Taiga
  4. Configurar Taiga Back
  5. Configurar Taiga Frontend
  6. Configurar Eventos de Taiga
  7. Configurar la Gestión de Procesos Circus
  8. Configurar el host virtual Nginx para Taiga.io
  9. Permitir que Nginx acceda al Frontend de Taiga
  10. Probar

Paso 1 – Instalar paquetes

Antes de instalar todos los componentes de Taiga.io, tenemos que preparar el sistema instalando algunos paquetes. En este primer paso, instalaremos los paquetes necesarios para todos los componentes y módulos de Taiga, incluyendo Nginx, RabitMQ, Redis, etc.

– Instalar dependencias

Necesitamos ‘Herramientas de Desarrollo’ para CentOS 7 que se utilizarán para compilar algunos módulos python.

Instala los paquetes necesarios utilizando el siguiente comando yum.

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

– Instalar el repositorio EPEL

Ahora necesitamos instalar el repositorio EPEL (Extra Packages for Enterprise Linux). Es necesario para instalar el servidor web Nginx, RabbitMQ y Redis.

Instala el Repositorio EPEL en el sistema CentOS 7 utilizando el siguiente comando:

sudo yum -y install epel-release

– Instalar Python

Taiga.io necesita Python 3.5 para su instalación. Utilizaremos un repositorio de terceros -‘ius community’- para instalar Python 3.5.

Añade el repositorio ‘ius community’ de la siguiente manera.

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

Ahora instala Python 3.5 utilizando el siguiente comando yum.

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

– Instala Nginx

Taiga.io es una herramienta de aplicación web, y se ejecuta bajo el servidor web. Y para esta guía, utilizaremos Nginx como servidor web.

Instala Nginx desde el repositorio EPEL utilizando el siguiente comando yum.

sudo yum -y install nginx

Una vez completada la instalación, inicia el servicio y habilítalo para que se inicie al arrancar el sistema.

systemctl start nginx
systemctl enable nginx

Ahora comprueba el puerto abierto utilizando el comando netstat.

netstat -plntu

Y asegúrate de que aparece el puerto HTTP 80 en la lista, como se muestra a continuación.

Instalar un servidor web Check nginx

– Instala Redis y RabbitMQ

Esto es opcional, ya que puedes ejecutar Taiga.io sin estos paquetes. Básicamente, los paquetes Redis y RabbitMQ serán utilizados por taiga-events.

Instala Redis y RabbitMQ desde el repositorio EPEL utilizando el siguiente comando yum.

yum -y install rabbitmq-server redis

Una vez completada la instalación, inicia los servicios de Redis y RabbitMQ, y habilítalos para que se inicien al arrancar el sistema.

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

systemctl start redis
systemctl enable redis

Instalar Redis y RabbitMQ

A continuación, tenemos que crear un nuevo usuario y host virtual llamado ‘taiga’ para el RabbitMQ, y se utilizará para ‘taiga-events’.

Ejecuta los siguientes comandos para crear un nuevo usuario y vhost llamado ‘taiga’ con la contraseña ‘aqwe123’, y luego establece el permiso para el usuario ‘taiga’.

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

RabbitMQ

– Instala Nodejs

‘taiga-events’ necesita Node – añade el repositorio nodejs nodesource e instálalo con el comando yum.

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

Todos los paquetes básicos necesarios para la instalación de Taiga.io han sido instalados en el sistema.

Paso 2 – Instalar y configurar PostgreSQL

Taiga.io es una aplicación web basada en el framework web Django de Python, y utiliza PostgreSQL como base de datos. Necesitamos la versión 9.5 de PostgreSQL para instalar Taiga.io.

Añade el repositorio PostgreSQL 9.5 al sistema.

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

Ahora instala PostgreSQL 9.5 utilizando el siguiente comando yum.

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

Una vez finalizada la instalación, tenemos que inicializar la base de datos PostgreSQL.

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

Ahora inicia el servicio PostgreSQL y habilítalo para que se inicie siempre al arrancar el sistema.

systemctl start postgresql-9.5
systemctl enable postgresql-9.5

Instalar PostgreSQL

A continuación, debemos crear una nueva base de datos para la instalación de Taiga.io. Necesitamos crear una nueva base de datos y un usuario llamado ‘taiga’.

Inicia sesión como usuario ‘postgres’.

su - postgres

Ahora crea una nueva base de datos y un nuevo usuario para Taiga.io utilizando los siguientes comandos.

createuser taiga
createdb taiga -O taiga

Crear usuario postgres y base de datos

Se ha creado la nueva base de datos PostgreSQL para la instalación de Taiga.io.

Paso 3 – Añadir usuario Taiga

En este paso, crearemos un nuevo usuario y grupo del sistema llamado ‘taiga’, y luego lo añadiremos al grupo wheel para el acceso a comandos sudo.

Utiliza el siguiente comando ‘useradd’ para crear el usuario y el grupo ‘taiga’.

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

Ahora añade el usuario «taiga» al grupo «wheel».

usermod -a -G wheel taiga

Comprueba que el usuario «taiga» tiene acceso a sudo.

su - taiga
sudo su

Escribe tu contraseña y asegúrate de que obtienes los privilegios de root para el usuario «taiga».

Añadir usuario de Taiga

Paso 4 – Configurar Taiga Back

Taiga-back es el backend de Taiga.io que proporciona una API al frontend de Taiga. Está escrito en Python y Django Web Framework.

En este paso, instalaremos y configuraremos el componente de taiga ‘taiga-back’.

Accede al usuario ‘taiga’ y descarga el código fuente de ‘taiga-back’ de GitHub.

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

Ahora ve al directorio ‘taiga-back’ y cambia la rama a la rama ‘estable’.

cd taiga-back
git checkout stable

Antes de continuar, tenemos que actualizar el paquete virtualenv.

sudo pip install --upgrade virtualenv

A continuación, crea un nuevo entorno python ‘taiga’ utilizando el comando mkvirtualenv.

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

Se ha creado el nuevo virtualenv para ‘taiga-back’.

Antes de instalar todos los módulos para taiga-back, tenemos que crear un nuevo enlace para el comando ‘pg_config’ en el directorio ‘/usr/bin’.

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

Ahora instala todos los módulos python que necesita ‘taiga-back’ utilizando los comandos que se indican a continuación.

workon taiga
pip install -r requirements.txt

Una vez completada la instalación, tenemos que rellenar la base de datos con los datos básicos iniciales.

Ejecuta todos los comandos siguientes.

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

Estos comandos crearán automáticamente una cuenta de administrador ‘admin‘ con la contraseña‘123123‘.

A continuación, crea una nueva configuración para ‘taiga-back’ utilizando vim.

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

Pega allí la siguiente configuración.

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:PASSWORD_FOR_EVENTS@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 = "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"

Guárdala y sal.

Nota:

  • Cambia ‘MEDIA_URL’ y ‘STATIC_URL’ por tu propio nombre de dominio.
  • Cambia ‘SECRET_KEY’ por tu propia clave secreta.
  • Cambia el valor de la contraseña EVENTS_PUSH_BACKEND_OPTIONS por tu propio valor de RabbitMQ. Para esta guía, estamos utilizando la contraseña ‘aqwe123’.

Ahora prueba ‘taiga-back’ con el siguiente comando.

workon taiga
python manage.py runserver 0.0.0.0:8000

El comando ejecutará taiga-back bajo la IP pública del servidor con el puerto 8000.

Iniciar TaigaIO

Abre el navegador web y visita la siguiente dirección.

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

Y obtendrás la API de ‘taiga-back’ con el formato JSON que se muestra a continuación.

API TaigaIO

La instalación y configuración de ‘taiga-back’ se ha completado.

Paso 5 – Configurar Taiga Frontend

En este paso, descargaremos y configuraremos el frontend de taiga. El Frontend gestionará todas las interfaces de taiga.

Accede con el usuario taiga.

su - taiga

Descarga el código fuente de ‘Taiga frontend’ utilizando git.

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

Ve al directorio ‘taiga-front-dist’ y cambia la rama a ‘stable’.

cd taiga-front-dist
git checkout stable

Copia el archivo de configuración por defecto y edítalo utilizando vim.

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

Copia la siguiente configuración:

{
     "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": []
 }

Guarda y sal.

La configuración de ‘Taiga frontend’ se ha completado.

Paso 6 – Configurar Taiga Events

Taiga-events es un servidor WebSocket que te permite mostrar cambios en tiempo real en el Dashboard de Taiga.io, y utiliza RabbitMQ como broker de mensajes. En este paso, descargaremos y configuraremos ‘taiga-events’.

Inicia sesión con el usuario ‘taiga’.

su - taiga

Descarga el código fuente de ‘Taiga Events’ y ve al directorio.

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

Ahora tenemos que descargar e instalar todas las librerías javascript que necesita ‘taiga-events’ utilizando el comando npm de la siguiente manera.

npm install
sudo npm install -g coffee-script

Nota: Necesitamos instalar el ‘coffee-script’ bajo el sistema raíz.

A continuación, copia el archivo de configuración JSON en ‘config.json’, y edítalo utilizando vim.

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

Pega allí la siguiente configuración.

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

Guarda y sal.

Nota:

  • Cambia el valor ‘url’ por tu propio usuario y contraseña de rabbitmq.
  • Para el valor ‘secret’, asegúrate de que coincide con ‘SECRET_KEY’ en ‘local.py’, el archivo de configuración de ‘taiga-back’.

La configuración de taiga-events ha finalizado.

Paso 7 – Instalar y configurar Circus

Circus se utilizará para controlar y gestionar los procesos ‘taiga-back’ y ‘taiga-events’. ‘taiga-events’ se ejecuta como un script de café, y ‘taiga-back’ se ejecuta bajo Gunicorn.

En este paso, instalaremos Circus manualmente desde el código fuente.

Inicia sesión como usuario de taiga.

su - taiga

Ahora descarga el código fuente de circus utilizando git.

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

Antes de instalar circus en el sistema, necesitamos crear un nuevo directorio para la configuración de circus.

Crea un nuevo directorio ‘conf’ bajo el usuario taiga.

mkdir -p ~/conf

Y crea una nueva configuración de circus para Taiga.io llamada ‘taiga.ini’.

vim ~/conf/taiga.ini

Pega la siguiente configuración.

[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

Guarda y sal.

Ahora crea el directorio para los archivos de registro de circus.

mkdir -p ~/logs

Ve al directorio circus e instala el software con privilegios de root.

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

Una vez finalizada la instalación, configuraremos circus como servicio en el sistema.

Ejecuta el comando sudo y crea un nuevo archivo de servicio ‘circusd.service’.

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

Pega allí la siguiente configuración.

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

Guarda y sal.

Ahora recarga el sistema systemd utilizando el siguiente comando.

systemctl daemon-reload

Asegúrate de que no se produce ningún error y, a continuación, inicia el servicio circusd y habilítalo para que se inicie siempre al arrancar el sistema.

systemctl start circusd
systemctl enable circusd

La instalación y configuración de Circus para Taiga.io se ha completado. Compruébalo utilizando el comando circusctl que aparece a continuación.

circusctl status

Y asegúrate de que aparecen los eventos taiga-back y taiga-events en la lista de procesos de circus.

incluye los eventos taiga-back y taiga-events en la lista de procesos del circo

O puedes utilizar el comando systemctl como se indica a continuación.

systemctl status circusd

Estado del circo

Paso 8 – Configurar el host virtual Taiga Nginx

En este paso, configuraremos el host virtual Nginx para Taiga.io. Crearemos un nuevo archivo de host virtual en el directorio ‘conf.d’ para nuestra instalación de Taiga.io.

Ve al directorio de configuración de nginx y crea un nuevo archivo ‘taiga.conf’ en el directorio ‘conf.d’.

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

Pega allí la siguiente configuración.

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

Guarda y sal.

Ahora ejecuta la configuración nginx de prueba y asegúrate de que no se produce ningún error. A continuación, reinicia el servicio del servidor web.

nginx -t
systemctl restart nginx

La configuración del host virtual para Taiga.io se ha completado.

TaigaIO Nginx vhost

Paso 9 – Permitir que Nginx acceda al Frontend de Taiga

A veces puede aparecer un error en el servidor web Nginx diciendo que no puede acceder a los archivos del frontend de Taiga – en este caso verás el ‘500 Internal Server Error’ de Nginx.

Para solucionar este problema, tenemos que cambiar el propietario o grupo de todos los archivos de taiga-frontend y dar acceso a Nginx a todos los archivos.

Por defecto en CentOS 7, el servidor web Nginx se ejecuta bajo el usuario ‘nginx’ y la instalación de Taiga.io se ejecuta bajo el usuario ‘taiga’.

A continuación se muestra el ejemplo del error de Nginx del que estamos hablando.

Permitir que Nginx acceda al Frontend de Taiga

El servidor web Nginx no puede leer todo el contenido del directorio ‘/home/taiga/taiga-front-dist/dist’.

Compruébalo utilizando el siguiente comando.

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

Y obtendrás el resultado de permiso denegado.

Ahora tenemos que añadir el usuario ‘nginx’ al grupo ‘taiga’ y dar al usuario nginx los permisos necesarios para el directorio taiga-front-dist.

Añade el usuario «nginx» al grupo «taiga».

sudo gpasswd -a nginx taiga

Da al servidor web permisos para leer todo el contenido del directorio taiga-front-dist.

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

Y reinicia el servidor web Nginx.

systemctl restart nginx

Paso 10 – Pruebas

Abre tu navegador web y visita el nombre de dominio de tu instalación de Taiga, el mío eshttp://taiga.hakase-labs.co

Y deberías obtener la página de inicio por defecto de Taiga como se muestra a continuación.

Descubre los proyectos

Aquí, escribe el usuario por defecto‘admin‘ con la contraseña‘123123‘, y luego haz clic en el botón ‘Iniciar sesión’.

Iniciar sesión en TaigaIO

Y accederás al panel de administración.

Panel TaigaIO

La instalación de Taiga.io en CentOS 7 con el servidor web Nginx se ha completado con éxito.

También te podría gustar...