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.
- Taiga-back: Backend de la aplicación que proporciona una API. Escrito en Python y Django.
- Taiga-front-dist: Frontend de Taiga escrito en AngularJS y CoffeeScript.
- 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
- CentOS 7
- Privilegios de root
Qué haremos
- Instalar paquetes
- Instalar y configurar PostgreSQL
- Añadir Usuario Taiga
- Configurar Taiga Back
- Configurar Taiga Frontend
- Configurar Eventos de Taiga
- Configurar la Gestión de Procesos Circus
- Configurar el host virtual Nginx para Taiga.io
- Permitir que Nginx acceda al Frontend de Taiga
- 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.
– 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
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 ".*" ".*" ".*"
– 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
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
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».
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.
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.
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.
O puedes utilizar el comando systemctl como se indica a continuación.
systemctl status circusd
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.
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.
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.
Aquí, escribe el usuario por defecto‘admin‘ con la contraseña‘123123‘, y luego haz clic en el botón ‘Iniciar sesión’.
Y accederás al panel de administración.
La instalación de Taiga.io en CentOS 7 con el servidor web Nginx se ha completado con éxito.