# Despliegue e instalación de V12

## Pre-requisitos

* Devkron Applications Server
* Servidor Web (Proxy) (p.e. Nginx)
* Servidor de bases de datos (MySQL | MariaDB)
    - En MySQL | MariaDB Es indispensable establecer ```lower_case_table_names=1```

## Paquetes

El diseño de V12 es modular por lo que todo el sistema 
es una colección de paquetes. Vea: [Conceptos básicos](conceptos-basicos.md)

No obstante, hay un conjunto de paquetes mínimos necesarios para 
que el sistema tenga sentido y pueda funcionar que deben ser desplegados.

Paquetes mínimos indispensables de V12

* dkl-ddm. Devkron Data Definition Model (herramientas para definir datos relacionales y administrar la base de datos)
* dkl-web. Marco para aplicaciones Web de Devkron
* dbext. Bibliotecas de funcionas indispensables y aplicaciones de gestión de usuarios, permisos y variables globales.
* v12. Plantilla de sitio Web y herramientas
* webshell. Aplicación contenedora de la interfaz del usuario Web.

### Repositorio de V12

El repositorio de paquetes oficial de Induxsoft V12 se encuentra en: https://install-v12.induxsoft.net/catalog.json

En este repositorio se encuentra un catálogo de los paquetes y "superpaquetes" disponibles que puede descargarse como un archivo JSON (catalog.json).

Un superpaquete es un nombre asociado a una lista de paquetes, una forma de simplificar el despligue.

#### Superpaquete: core

El superpaquete core incluye todos los paquetes mínimos indispensables, por lo que al desplegarlo e instalarlo, sería suficiente para tener un sistema V12 operativo aunque sin aplicaciones (que puede instalar más tarde).

## Procedimiento general

Para la puesta en productivo de un sistema V12 siga los siguientes pasos:

1. Despliegue los paquetes que desea implementar.
2. Cree o establezca una conexión a la base de datos
3. Instale los paquetes que ha desplegado 
4. Cree el sitio Web usando la plantilla de V12
5. Conecte el sitio Web a la base de datos en la que ha instalado los paquetes desplegados

### Despliegue

Los paquetes se encuentran en archivos comprimidos en ZIP en el repositorio oficial de Induxsoft V12

Para simplificar esta tarea, descargue y use la herramienta de línea de comando (PowerShell / Shell): ```deployv12.dkl```

**En Linux**
```shell
# Descargar la herramienta en el directorio de binarios de la instalación de Devkron

wget https://install-v12.induxsoft.net/deployv12.dkl
```

**Windows PowerShell**
```shell
# Descargar la herramienta en el directorio de binarios de la instalación de Devkron

wget https://install-v12.induxsoft.net/deployv12.dkl -O deployv12.dkl
```
**En Linux y Windows (PowerShell)**

```shell
## Despliegue los paquetes a usar, si es un primer despliegue no olvide incluir al super-paquete 'core'

./dkl deployv12 "packs=core, cxp,cxc, inventario, compras"

```

Más información acerca de [deployv12.dkl](deployv12.md)

### Creación o conexión a la base de datos

Use la herramienta dba para crear o conectarse a una base de datos existente.

Utilidad de línea de comandos para administrar conexiones y crear bases de datos.

```
./dkl dba [opción] [parámetros]
```
Opciones:

* ```show all``` Muestra todas las conexiones en el repositorio
* ```show``` Muestra la información de la conexión indicada en el parámetro ```qn```
* ```delete``` Elimina la conexión indicada en el parámetro ```qn```
* ```create database``` Crea una base de datos y su registro de conexión con la información de los parámetros ```qn``` y ```settings```
* ```create connection``` Crea un registro de conexión con la información de los parámetros ```qn``` y ```settings```

Parámetros
* ```qn``` Indica un nombre cualificado de conexión (nombreconexion@grupodeaplicacion)
* ```settings``` Indica un conjunto de valores para establecer una conexión a la base de datos, los pares clave valor deben delimitarse por comas y a su vez, cada clave y su valor se delimitan por dos puntos, para conocer las claves (parámetros de configuración conocidos) vea [Funciones de administración de conexiones](https://docs.induxsoft.net/es/devkron/Bibliotecas-de-funciones/dbr/dbr.md)

Ejemplos
```shell
# Mostrar todas las conexiones
./dkl dba show all

# Mostrar información de una conexión
./dkl dba show qn=miconexion@grupoapps

# Eliminar una conexión
./dkl dba delete qn=miconexion@grupoapps

# Crear una conexión a una base de datos existente
# Observe cómo está formado el parámetro settings para indicar los datos de la conexión
./dkl dba create connection qn=miconexion@grupoapps "settings=Engine:MY_SQL,Host:nombreoipdelhost,Port:3306,UserName:root, Password:12345,SslMode:0,DefaultSchema:nombrebasededatos"

# Crear una base de datos y su registro de conexión
./dkl dba create database qn=miconexion@grupoapps "settings=Engine:MY_SQL,Host:nombreoipdelhost,Port:3306,UserName:root, Password:12345,SslMode:0,DefaultSchema:nombrebasededatos"
```

### Instalación

La mayoría de los paquetes funcionales requiren la creación de objetos en la base de datos relacional, carga de datos iniciales y otras tareas de instalación.

Cada paquete como se detalla [aquí](paquetes.md), cuenta con un programa de instalación.

Para simplificar el ejecutar manualmente el programa de instalación de cada paquete, use la herramienta ```installv12```

```shell
# Instalar 
./dkl installv12 "db=miconexion@grupoapps" "packs=core, cxc, cxp, inventario"
```

Observe que el super paquete mínimo indispensable es 'core', los demás son con funcionalidad específica (cxc, cxc, inventarios,etc.).

### Creación del sitio Web

Para crear el sitio Web a través del cual se accederá al sistema V12 use la herramienta 'createsite'.

```shell
# Crear el sitio Web con la plantilla de sitio Web para V12
./dkl createsite v12 "sudominio-o-host.com"
```

### Conectar el sitio Web

El último paso para poder usar el sistema V12 es indicarle al sitio Web cuál es la base de datos relacional correspondiente.

```shell
# Conectar sitio Web V12 a la base de datos
./dkl connectv12 "db=miconexion@grupoapps" "host=sudominio-o-host.com"
```

### Actualización Automática de Paquetes

El proceso de actualización automática de paquetes tiene como objetivo mantener sincronizados y actualizados los paquetes V12 instalados en una base de datos.

El sistema valida las versiones instaladas contra las versiones publicadas en el repositorio de paquetes, permitiendo actualizar automáticamente tanto el código fuente como la estructura del paquete cuando existan nuevas versiones disponibles.

---

# Actualizar Paquetes Instalados

```bash
./dkl updatev12 "db=miconexion@grupoapps"
```

[Documento técnico](https://docs.induxsoft.net/es/productos/v12/devops/updatev12.md)

