Taiga.io es un sistema de gestión de proyectos de código abierto para desarrolladores, diseñadores y gestores de proyectos ágiles. Es una hermosa herramienta de administración de proyectos que puede manejar proyectos simples y complejos para empresas emergentes, desarrolladores de software, etc.
La plataforma Taiga tiene tres componentes principales y cada componente tiene sus propias dependencias.
- espalda de taiga :Backend de la aplicación que proporciona una API. Escrito en Python y Django.
- Taiga-front-dist :Taiga Frontend escrito en AngularJS y CoffeeScript.
- Eventos de Taiga :servidor Taiga WebSocket para mostrar cambios en tiempo real en las aplicaciones. Y usando RabbitMQ como intermediario de mensajes.
En este tutorial, le mostraré paso a paso cómo instalar las herramientas de administración de proyectos Taiga.io en el servidor CentOS 7. También aprenderemos cómo instalar y configurar el servidor CentOS 7 para la instalación de Taiga.io.
Requisitos
- Cent OS 7
- Privilegios de raíz
Lo que haremos
- Instalar paquetes
- Instalar y configurar PostgreSQL
- Añadir usuario Taiga
- Configurar Taiga Volver
- Configurar interfaz de Taiga
- Configurar eventos de Taiga
- Configurar la gestión de procesos de Circus
- Configurar host virtual Nginx para Taiga.io
- Permitir que Nginx acceda a la interfaz de Taiga
- Pruebas
Paso 1 - Instalar paquetes
Antes de instalar todos los componentes de Taiga.io, debemos preparar el sistema instalando algunos paquetes. En este primer paso, instalaremos los paquetes necesarios para todos los componentes y módulos de Taiga, incluidos Nginx, RabitMQ, Redis, etc.
- Dependencias de instalación
Necesitamos 'Herramientas de desarrollo' para CentOS 7 que se usarán para compilar algunos módulos de python.
Instale los paquetes requeridos usando el comando yum a continuación.
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 repositorio EPEL
Ahora necesitamos instalar el repositorio EPEL (Extra Packages for Enterprise Linux). Es necesario para instalar el servidor web Nginx, RabbitMQ y Redis.
Instale el Repositorio EPEL en el sistema CentOS 7 usando el siguiente comando:
sudo yum -y install epel-release
- Instalar Python
Taiga.io necesita Python 3.5 para la instalación. Usaremos un repositorio de terceros - 'ius community' - para instalar Python 3.5.
Agregue el repositorio 'ius community' de la siguiente manera.
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
Ahora instale Python 3.5 usando el siguiente comando yum.
sudo yum -y install python35u python35u-pip python35u-devel python-devel python-pip python-virtualenvwrapper libxml2-devel libxslt-devel
- Instalar Nginx
Taiga.io es una herramienta de aplicación web y se ejecuta en el servidor web. Y para esta guía, usaremos Nginx como servidor web.
Instale Nginx desde el repositorio de EPEL usando el comando yum a continuación.
sudo yum -y install nginx
Una vez completada la instalación, inicie el servicio y habilítelo para que se inicie al arrancar el sistema.
systemctl start nginx
systemctl enable nginx
Ahora verifique el puerto abierto usando el comando netstat.
netstat -plntu
Y asegúrese de obtener el puerto HTTP 80 en la lista como se muestra a continuación.
- Instalar Redis y RabbitMQ
Esto es opcional, ya que aún puede ejecutar Taiga.io sin estos paquetes. Básicamente, taiga-events utilizará los paquetes Redis y RabbitMQ.
Instale Redis y RabbitMQ desde el repositorio de EPEL utilizando el siguiente comando yum.
yum -y install rabbitmq-server redis
Si la instalación está completa, inicie los servicios Redis y RabbitMQ, luego habilítelos para que se inicien en el arranque del sistema.
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
systemctl start redis
systemctl enable redis
A continuación, debemos crear un nuevo usuario y host virtual llamado 'taiga' para RabbitMQ, y se usará para 'taiga-events'.
Ejecute los siguientes comandos para crear un nuevo usuario y vhost llamado 'taiga' con la contraseña 'aqwe123', luego establezca el permiso para el usuario 'taiga'.
sudo rabbitmqctl add_user taiga aqwe123
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"
- Instalar Nodejs
Node es necesario para 'taiga-events':agregue el repositorio nodesource de nodejs e instálelo 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 se han instalado en el sistema.
Paso 2:instalar y configurar PostgreSQL
Taiga.io es una aplicación web basada en el marco web Python Django y utiliza PostgreSQL como base de datos. Necesitamos la versión 9.5 de PostgreSQL para la instalación de Taiga.io.
Agregue el repositorio de 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 instale PostgreSQL 9.5 usando el comando yum a continuación.
sudo yum -y install postgresql95 postgresql95-devel postgresql95-contrib postgresql95-docs postgresql95-server
Una vez completada la instalación, debemos inicializar la base de datos de PostgreSQL.
sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
Ahora inicie el servicio PostgreSQL y permita que se inicie cada vez que se inicie 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'.
Inicie sesión como usuario 'postgres'.
su - postgres
Ahora cree una nueva base de datos y un usuario para Taiga.io usando los siguientes comandos.
createuser taiga
createdb taiga -O taiga
Se ha creado una nueva base de datos PostgreSQL para la instalación de Taiga.io.
Paso 3:Agregar usuario de Taiga
En este paso, crearemos un nuevo usuario y grupo del sistema llamado 'taiga', y luego lo agregaremos al grupo de ruedas para acceder al comando sudo.
Use el comando 'useradd' a continuación para crear el usuario y el grupo 'taiga'.
useradd -U -m -s /bin/bash taiga
passwd taiga
Ahora agregue el usuario 'taiga' al grupo 'rueda'.
usermod -a -G wheel taiga
Pruebe el usuario 'taiga' para acceder a sudo.
su - taiga
sudo su
Escriba su contraseña y asegúrese de obtener 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 a la interfaz de Taiga. Está escrito en Python y Django Web Framework.
En este paso, instalaremos y configuraremos el componente taiga 'taiga-back'.
Inicie sesión en el usuario 'taiga' y descargue el código fuente '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, necesitamos actualizar el paquete virtualenv.
sudo pip install --upgrade virtualenv
A continuación, cree un nuevo entorno de python 'taiga' con el comando mkvirtualenv.
mkvirtualenv -p /usr/bin/python3.5 taiga
Se ha creado un nuevo virtualenv para 'taiga-back'.
Antes de instalar todos los módulos para taiga-back, necesitamos crear un nuevo enlace para el comando 'pg_config' al directorio '/usr/bin'.
sudo ln -s /usr/pgsql-9.5/bin/pg_config /usr/bin/pg_config
Ahora instale todos los módulos de python que necesita el 'taiga-back' usando los comandos a continuación.
workon taiga
pip install -r requirements.txt
Una vez completada la instalación, necesitamos llenar la base de datos con los datos básicos iniciales.
Ejecute todos los siguientes comandos.
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 contraseña '123123 '.
Luego, cree una nueva configuración para 'taiga-back' usando vim.
vim ~/taiga-back/settings/local.py
Pegue la siguiente configuración allí.
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"
Guardar y salir.
- Cambie 'MEDIA_URL' y 'STATIC_URL' con su propio nombre de dominio.
- Cambie la 'SECRET_KEY' con su propia clave muy secreta.
- Cambie el valor de la contraseña de EVENTS_PUSH_BACKEND_OPTIONS a su propio valor de RabbitMQ. Para esta guía, usamos 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.
Abra el navegador web y visite la siguiente dirección.
http://192.168.33.10:8000/api/v1/
Y obtendrá la API 'taiga-back' con formato JSON como 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 la interfaz de taiga. El Frontend se encargará de todas las interfaces de taiga.
Inicie sesión en el usuario de taiga.
su - taiga
Descarga el código fuente de 'Taiga frontend' usando git.
cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
Vaya al directorio 'taiga-front-dist' y cambie la rama a 'estable'.
cd taiga-front-dist
git checkout stable
Copie el archivo de configuración predeterminado y edítelo usando vim.
cp ~/taiga-front-dist/dist/conf.example.json ~/taiga-front-dist/dist/conf.json
vim ~/taiga-front-dist/dist/conf.json
Copie 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": []
}
Guardar y salir.
La configuración de 'Frontend Taiga' se ha completado.
Paso 6:configurar los eventos de Taiga
Taiga-events es un servidor WebSocket que le permite mostrar cambios en tiempo real en el panel de control de Taiga.io y utiliza RabbitMQ como intermediario de mensajes. En este paso, descargaremos y configuraremos 'taiga-events'.
Inicie sesión en 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 necesitamos descargar e instalar todas las bibliotecas de javascript que necesita 'taiga-events' usando el comando npm de la siguiente manera.
npm install
sudo npm install -g coffee-script
Luego, copie el archivo de configuración JSON a 'config.json', luego edítelo usando vim.
cp config.example.json config.json
vim config.json
Pegue la siguiente configuración allí.
{
"url": "amqp://taiga:[email protected]:5672/taiga",
"secret": "theveryultratopsecretkey",
"webSocketServer": {
"port": 8888
}
}
Guardar y salir.
- Cambie el valor de 'url' con su propio usuario y contraseña de rabbitmq.
- Para el valor 'secreto', asegúrese de que coincida con 'SECRET_KEY' en 'local.py', el archivo de configuración de 'taiga-back'.
La configuración de los eventos de Taiga se ha completado.
Paso 7:instalar y configurar Circus
Circus se utilizará para controlar y gestionar el proceso de '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.
Inicie sesión como usuario de taiga.
su - taiga
Ahora descarga el código fuente de Circus usando 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.
Cree un nuevo directorio 'conf' bajo el usuario taiga.
mkdir -p ~/conf
Y cree una nueva configuración de circo para Taiga.io llamada 'taiga.ini'.
vim ~/conf/taiga.ini
Pegue 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
Guardar y salir.
Ahora cree el directorio para los archivos de registro de circo.
mkdir -p ~/logs
Vaya al directorio de Circus e instale el software con privilegios de root.
cd ~/circus
sudo python3.5 setup.py install
Una vez completada la instalación, configuraremos Circus como un servicio en el sistema.
Ejecute el comando sudo, luego cree un nuevo archivo de servicio 'circusd.service'.
sudo su
vim /usr/lib/systemd/system/circusd.service
Pegue la siguiente configuración allí.
[Unit]
Description=circus
[Service]
ExecStart=/usr/bin/circusd /home/taiga/conf/taiga.ini
Guardar y salir.
Ahora recarga el sistema systemd usando el siguiente comando.
systemctl daemon-reload
Asegúrese de que no haya ningún error, luego inicie el servicio circusd y habilítelo para que se inicie cada vez que se inicie el sistema.
systemctl start circusd
systemctl enable circusd
Se completó la instalación y configuración de Circus para Taiga.io. Compruébalo usando el comando circusctl a continuación.
circusctl status
Y asegúrese de obtener el taiga-back y los eventos de taiga en la lista de procesos del circo.
O puede usar el comando systemctl como se muestra 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.
Vaya al directorio de configuración de nginx y cree un nuevo archivo 'taiga.conf' en el directorio 'conf.d'.
cd /etc/nginx/
vim conf.d/taiga.conf
Pegue la siguiente configuración allí.
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;
}
}
Guardar y salir.
Ahora ejecute la configuración de prueba nginx y asegúrese de que no haya ningún error. Luego reinicie 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 a la interfaz de Taiga
A veces puede recibir un error sobre el servidor web de Nginx que dice que no puede acceder a los archivos de taiga-frontend; en este caso, verá el "Error interno del servidor 500" de Nginx.
Para resolver este problema, debemos cambiar el propietario o grupo de todos los archivos de taiga-frontend y dar acceso a Nginx a todos los archivos.
De forma predeterminada en CentOS 7, el servidor web Nginx se ejecuta con el usuario 'nginx' y la instalación de Taiga.io se ejecuta con el usuario 'taiga'.
El siguiente es el ejemplo del error de Nginx del que estamos hablando.
El servidor web Nginx no puede leer todo el contenido en el directorio '/home/taiga/taiga-front-dist/dist'.
Compruébalo usando el siguiente comando.
sudo -u nginx stat /home/taiga/taiga-front-dist/dist
Y obtendrá el resultado de permiso denegado.
Ahora necesitamos agregar el usuario 'nginx' al grupo 'taiga' y otorgarle al usuario nginx los permisos requeridos para el directorio taiga-front-dist.
Agregue el usuario 'nginx' al grupo 'taiga'.
sudo gpasswd -a nginx taiga
Otorgue permisos al servidor web para leer todo el contenido en el 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 reinicie el servidor web Nginx.
systemctl restart nginx
Paso 10 - Prueba
Abra su navegador web y visite su nombre de dominio de instalación de Taiga, el mío es http://taiga.hakase-labs.co
Y debería obtener la página de inicio predeterminada de Taiga como se muestra a continuación.
Aquí, escriba el usuario predeterminado 'admin ' con contraseña '123123 ', y luego haga clic en el botón 'Iniciar sesión'.
Y accederá al panel de administración.
La instalación de Taiga.io en CentOS 7 con el servidor web Nginx se completó con éxito.