Saltearse al contenido

Instalación histrix con Nginx

En este documento se detalla la instalación de Histrix con Nginx y MySQL usando Docker y Docker-Compose. Histrix es un sistema de gestión de empresas y negocios que permite la administración de clientes, proveedores, stock, vendedores, transportistas, entre otros.

Primeros pasos

Para instalar Histrix con Nginx y MySQL usando Docker y Docker-Compose, se deben seguir los siguientes pasos:

Instalación de Docker

Para instalar Docker puedes seguir los pasos de la documentación oficial. En este caso, se instalará Docker en Ubuntu 24.04 usando apt.

Ventana de terminal
# Actualizar el índice de paquetes:
sudo apt-get update
# Instalar paquetes para permitir a apt usar un repositorio sobre HTTPS:
sudo apt-get install ca-certificates curl
# Agregar la clave GPG oficial de Docker:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Agregar el repositorio de Docker a las fuentes de APT:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# Instalar Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Verificar la instalación:
sudo docker --version

Configuración de Docker

Para configurar Docker, se debe crear un archivo de configuración en la ruta /etc/docker/daemon.json con el siguiente contenido:

{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5"
}
}

Con esto, se limita el tamaño de los logs de Docker a 10MB y se mantienen solo 5 archivos de logs. Después de crear el archivo, se debe reiniciar el servicio de Docker:

Ventana de terminal
sudo systemctl restart docker

Configurar usuario del servicio

Como usario root, crear un usuario para el servicio de Histrix:

Ventana de terminal
sudo adduser automata

le damos permisos de sudo:

Ventana de terminal
sudo usermod -aG sudo automata

Le damos permisos de docker:

Ventana de terminal
sudo usermod -aG docker automata

Instalación de Histrix

Para inicar tiene que entrar como usuario automata:

Ventana de terminal
su - automata

Dentro del home del usuario automata tienes que generar la siguiente estructura de carpetas:

Ventana de terminal
mkdir -p ~/[Nombre del cliente]/{modules,database}

Para continuar tienes que crear una api key de bitbucket con permisos de lectura y escritura de repositorios. En el siguiente enlace puedes crear una api key.

Teniendo la api key te mueves a la carpeta modules y clonas los modulos de histrix:

Ventana de terminal
cd ~/[Nombre del cliente]/modules
git clone --depth 4 https://[nombre-usuario]:[api-key]@bitbucket.org/mundo-it/erp-full.git erp-full
git clone --depth 4 https://[nombre-usuario]:[api-key]@bitbucket.org/mundo-it/htxcore.git histrix

En la carpeta database tienes que clonar el repositorio de los xmls del cliente:

Ventana de terminal
cd ~/[Nombre del cliente]/database
git clone --depth 4 https://[nombre-usuario]:[api-key]@bitbucket.org/mundo-it/[nombre-repositorio-xml].git

Configuración de Histrix

Histrix su configuracion va en la carpeta database con un archivo llamado config.xml que tiene la siguiente estructura:

<?xml version="1.0" encoding="UTF-8"?>
<sistema>
<empresa>
<img_fondo>histrix_back.jpg</img_fondo>
<lang>es</lang>
</empresa>
<conexiones>
<base id="[Nombre del ciente]" tipo="mysql" xmlPath="[Nombre de los xml del ciente]/">
<descripcion>[Nombre del ciente]</descripcion>
<base>[nombre de la base de dato]</base>
<driver>mysql</driver>
<user>[Usuario de la base de dato]</user>
<password>[Contraseña de la base de dato]</password>
<host>[url del servidor base de dato]</host>
<empresa>
<nombre>[Nombre del ciente]</nombre>
<direccion>[Direccion del ciente]</direccion>
<cuit>[Cuit del cliente]</cuit>
<telefonos/>
<logo_pdf_1 posx="6" width="30">logo.jpg</logo_pdf_1>
<logo_ini>logo.png</logo_ini>
<modulos>|clientes|proveedores|stock|iva|contabilidad|packs|vendedores|transportistas</modulos>
<img_fondo/>
</empresa>
</base>
</conexiones>
</sistema>

Docker-compose de Histrix

Para instalar Histrix con Nginx y MySQL usando Docker y Docker-Compose, se debe crear un archivo docker-compose.yml en la raiz del usuario automata con el siguiente contenido:

services:
redis:
image: redis:6.0.3-buster
restart: unless-stopped
container_name: redis
expose:
- "6379"
command: "redis-server --appendonly yes"
networks:
- backend
db:
image: mysql:8.3.0
command: --default-authentication-plugin=mysql_native_password --sql-mode="NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
container_name: db
volumes:
- mysql-data:/var/lib/mysql
restart: unless-stopped
networks:
- backend
expose:
- "3306"
environment:
MYSQL_ROOT_PASSWORD: [Contraseña de la base de dato]
MYSQL_ROOT_HOST: '%'
MYSQL_DATABASE: [nombre de la base de dato]
TZ: America/Argentina/Buenos_Aires
php:
image: mundoit/histrix-runtime:nginx-06
restart: unless-stopped
container_name: histrix
volumes:
- "/home/automata/[nombre-cliente]/database:/var/www/html/database"
- "/home/automata/[nombre-cliente]/modules:/var/www/html/modules"
ports:
- "80:80"
- "8888:8888"
depends_on:
- redis
- db
environment:
- REDIS_SERVER_HOST=redis
- GIT_EMAIL=[Correo electronico del usuario de bitbucket]
- GIT_NAME=[Nombre del usuario de bitbucket]
- GIT_PERSONAL_TOKEN=[Api key de bitbucket]
- GIT_USERNAME=[Nombre de usuario de bitbucket]
- GIT_REPO=bitbucket.org/mundo-it/histrix.git
- GIT_BRANCH=nginx-fpm
- PGID=[ID del grupo de automata]
- PUID=[ID del usuario de automata]
- WEBROOT=/var/www/html
- RUN_SCRIPTS=1
- PHP_MEM_LIMIT=1024M
- PHP_POST_MAX_SIZE=1024M
- PHP_UPLOAD_MAX_FILESIZE=1024M
- PHP_ERRORS_STDERR=1
- SKIP_COMPOSER=1
- REMOVE_FILES=0
- ERRORS=0
networks:
- backend
- frontend
links:
- db
volumes:
mysql-data: # Donde se guarda la base de datos
networks:
backend:
frontend:

Iniciar Histrix

Para iniciar Histrix con Nginx y MySQL usando Docker y Docker-Compose, se debe ejecutar el siguiente comando:

Ventana de terminal
docker compose up -d

Con esto, Histrix estará corriendo en el puerto 80 y 8888 de la máquina local.

Comandos útiles

Pull de cambios de Histrix

Para hacer un pull de los cambios de Histrix, se debe ejecutar el siguiente comando:

Ventana de terminal
sudo docker exec -t -i histrix /usr/bin/pull

Pull de cambios de los modulos

Para hacer un pull de los cambios de los modulos de Histrix, se debe ejecutar el siguiente comando:

Ventana de terminal
cd ~/[Nombre del cliente]/modules/erp-full
git pull
cd ~/[Nombre del cliente]/modules/histrix
git pull

Pull de cambios de los xmls

Para hacer un pull de los cambios de los xmls del cliente, se debe ejecutar el siguiente comando:

Ventana de terminal
cd ~/[Nombre del cliente]/database/[nombre-repositorio-xml]
git pull

Ver logs de Histrix

Para ver los logs de Histrix, se debe ejecutar el siguiente comando:

Ventana de terminal
cd ~/[Nombre del cliente]/database/[nombre-repositorio-xml]/logs/[año]/[mes]
# Ver logs de select de Histrix
tail -f sql_select.log
# Ver logs de insert/update de Histrix
tail -f sql_update.log
# tendras mas archivos de logs aca