Instalación y requerimientos técnicos
Hardware
- CPU: 4 Cores
- RAM: 8 Gb
- HDD: 50 Gb
- HDD-Datos: según requerimientos
Sistemas operativos
- Ubuntu Server (64) 18.4 o superior
- Debian 10 (64) o superior
- RHEL 8 o superior.
Pre-requisitos
MariaDB
Nginx
Net Core 3.1
JDK 11
GDI Plus
Elasticsearch
Rabbit MQ
Tesseract OCR
Instalar JDK si es necesario
============================================================= https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-20-04
Instalar GDI Plus
=============================================================
Ubuntu: sudo apt-get install -y libgdiplus
Debian: sudo apt-get install libgdiplus
Instalar Net Core 3.1 Ubuntu
=============================================================
wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk-3.1
Una vez finalizada la instalación, generar certificados locales para https con el comando
dotnet dev-certs https
Instalar Net Core 3.1 Debian
=============================================================
sudo apt update
sudo apt install apt-transport-https
wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install dotnet-sdk-3.1
sudo apt update
sudo apt install dotnet-runtime-3.1
Instalar MySQL
=============================================================
Eso corre por cuenta del administrador de la BD.
Creación de usuario de MySQL de PIKA
=============================================================
1. Ejecutar script para aumentar la seguridad de MySQL
sudo mysql_secure_installation
2. Crear la cuenta de usuario de pika
sudo mysql
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_BY ‘TuPassword’;
FLUSH PRIVILEGES;
CREATE USER ‘pika’@’localhost’ IDENTIFIED BY ‘TuPassword’;
GRANT ALL PRIVILEGES ON *.* TO ‘pika’@’localhost’ WITH GRANT OPTION;
3. Probar la cuenta creada
mysql -u pika -p
Creación de usuario de MySQL de ElasticSearch
=============================================================
Añadir las características de seguridad de ES
1. Editar archivo de configuración
sudo nano /etc/elasticsearch/elasticsearch.yml
descometar y poner: network.host: localhost
adicionar las lineas al final del archivo
xpack.security.enabled: true
discovery.type: single-node
2. Reiniciar el servicio
sudo /etc/init.d/elasticsearch restart
3. Ejecutar la herramienta de contraseñas automatica
cd /usr/share/elasticsearch/bin
sudo ./elasticsearch-setup-passwords auto
Aparece en pantalla la lista de contraseñas asignadas, por ejemplo
apm_system = ybFkqiYuBZGP0XwEiEkn
kibana_system = uMCx7wyhOFXteA8jHa5S
kibana = uMCx7wyhOFXteA8jHa5S
logstash_system = pGjlsYaRenvzYKMjCvuU
beats_system = Ztc817sVOa8NA6emG3v9
remote_monitoring_user = z9jetQ2uLf7ONK8wZFeu
elastic = dUKjmJlfvIgZNvp04x7K
Creación de usuario de RabbitMQ
=============================================================
sudo rabbitmqctl add_user pika TuPassword
sudo rabbitmqctl set_user_tags pika administrator
sudo rabbitmqctl set_permissions -p / pika “.*” “.*” “.*”
Instalación de servicios y cliente web
=============================================================
Descargar el archivo desde:
Crear el directorio pika en el home del usuario y extraer el contenido del zip. Al final debe quedar una configuración como la siguiente:
Crear los directorios faltantes
Deben editarse los archivos de configuración para establecer las cuentas de usuario para acceder a los servicios
Edición de la configuración de api
———————————————————————————————————
Editar el archivo appsettings.json localizado en la carpeta api
Linea 42: establecer el usuario y contraseña de MySQL
“pika-gd”: “Server=127.0.0.1;Port=3306;Database=pika-gd;Uid=pika;Pwd=TuPassword;”
Linea 46: Ip o nombre de dominio para el servicio de identidad, ejemplos. Debe ser el DNS o dirección a través de la cual ingresarán los usuarios a la aplicación web
“jwtauth”: “https://pikagd.arguz.net“
o por ip
“jwtauth”: “http://192.168.10.150/identidad/”
Lineas 56-59: rutas del sistema, el cache para la descarga de apliaciones, ruta temporal para el proceso de OCR, y ruta de instalación de tesseract
“ruta_cache_fisico”: “/home/arguz/pika/cache”,
“separador_ruta”: “/”,
“ruta_temporal”: “/home/arguz/pika/volumenes/tmp”,
“ruta_tesseract”: “/usr/bin/tesseract”
Líneas 64-111: establecer el usuario y contraseña para Elasticsearch de manera similar a:
“Tipo”: “elasticsearch”,
“DatosConexion”: {
“Id”: “-“,
“Protocolo”: “http://”,
“Url”: “127.0.0.1”,
“Puerto”: 9200,
“Usuario”: “elastic”,
“Contrasena”: “dUKjmJlfvIgZNvp04x7K”,
Lineas 119 y 120: establecer el usuario contraseña para RabbitMQ similar a:
“Usuario”: “pika”,
“Contrasena”: “TuPassword”,
Edición de la configuración de identityserver
———————————————————————————————————
Editar el archivo appsettings.json localizado en la carpeta identity
Línea 5: configuración de MySQL
Línea 1 y 9: Ip o nombre de dominio para el servicio de identidad, ejemplos. Debe ser el DNS o dirección a través de la cual ingresarán los usuarios a la aplicación web
“jwtauth”: “https://pikagd.arguz.net“
o por ip
“jwtauth”: “http://192.168.10.150/identidad/”
Inicio de los servicios del sistema
=============================================================
Para los servicios del sistema se ejecuten de manera automática es necesario crear dos archivos de configuración de servicio utilizando las siguientes plantillas:
Para el servicio de API
——————————————————————————————————–
[Unit]
Description=Servicio de API PIKA
[Service]
User=arguz
WorkingDirectory=/home/arguz/pika/api
Environment=urls=http://localhost:5000;https://localhost:5001
SyslogIdentifier=pika-identity-server
ExecStart=/usr/bin/dotnet /home/arguz/pika/api/PIKA.GD.API.dll
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
- Reemplace las siguientes líneas:
User= [Usuario bajo el cual será ejecutado el servicio]
WorkingDirectory= [ruta al directorio de API]
ExecStart=/usr/bin/dotnet [ruta al directorio de API]/PIKA.GD.API.dll
- Salve el archivo con el nombre pika.api.service en el directorio /etc/systemd/system/
- Ejecute los siguientes comandos
- sudo systemctl daemon-reload
- sudo systemctl enable pika.api.service
- sudo systemctl start pika.api.service
- Puede consultar el estado del servicio con el comando
- sudo systemctl status –no-pager –full pika.api.service
Que deberá mostrar una pantalla similar a la siguiente, indicando que el servicio se ejecuta correctamente
Para el servicio de Identidad
——————————————————————————————————–
[Unit]
Description=Servicio de identidad PIKA
[Service]
User=arguz
WorkingDirectory=/home/arguz/pika/identity
Environment=urls=http://localhost:4000;https://localhost:4001
SyslogIdentifier=pika-identity-server
ExecStart=/usr/bin/dotnet /home/arguz/pika/identity/PIKA.Identity.Server.dll
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
- Reemplace las siguientes líneas:
User= [Usuario bajo el cual será ejecutado el servicio]
WorkingDirectory= [ruta al directorio de Identidad]
ExecStart=/usr/bin/dotnet [ruta al directorio de Identidad]/PIKA.Identity.Server.dll
- Salve el archivo con el nombre pika.identity.service en el directorio /etc/systemd/system/
- Ejecute los siguientes comandos
- sudo systemctl daemon-reload
- sudo systemctl enable pika.identity.service
- sudo systemctl start pika.identity.service
- Puede consultar el estado del servicio con el comando
- sudo systemctl status –no-pager –full pika.identity.service
Que deberá mostrar una pantalla similar a la siguiente, indicando que el servicio se ejecuta correctamente
Configuración de la aplicación Web
=============================================================
En el directorio donde extrajo el contenido del ZIP y dentro de la carpeta html edite el archivo config.json y establezca el nombre de DNS o la IP en la cual será publicado el servicio
{
“production”: true,
“authUrl”: “http://192.168.10.28/identidad/”,
“apiUrl”: “http://192.168.10.28/servicios/api/v1.0/”,
“pikaApiUrl”: “http://192.168.10.28/servicios/”,
“apiVersion”: “1.0”,
“editorToken”: “tipo”,
“callbackRoute”: “/pages/tabular?tipo=volumen&id=&sub=”,
“cacheActivo”: true,
“uploadUrl”: “http://192.168.10.28/servicios/api/v1.0/upload”,
“visordUrl”: “http://192.168.10.28/servicios/api/v1.0/visor”,
“mediaUrl”: “http://192.168.10.28/servicios/api/v1.0/media”,
“version”: “1.0.2”
}
Guarde los cambios y copie el contenido del directorio al de publicación de Nginx, por ejemplo con el comando mostrado
sudo cp * /usr/share/nginx/html/ -R
Estando dentro de la ruta html por ejemplo /home/arguz/pika/html
Configuración del servidor Web y API
===========================================================
Copie contenido siguiente en el archivo de configuración de Nginx a la ruta /etc/nginx/sites-available con el nombre default.
server {
listen 80 default_server;
listen [::]:80 default_server;
client_max_body_size 500M;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don’t use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html?$args;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
}
location /servicios {
rewrite /servicios(.*) $1 break;
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /identidad {
rewrite /identidad(.*) $1 break;
proxy_pass http://localhost:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /kibana {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Una vez creado el archivo cambie el dueño a root con el comando
sudo chown root:root default
Ejecute el comando
sudo nginx -t
Y si la respuesta es como la siguiente la configuración el correcta
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicie el servicio de Nginx para aplicar los cambios
sudo systemctl reload nginx
Adición de entradas en la base de datos
=============================================================
Para que la aplicación pueda utilizar el mecanismo de autenticación es necesario añadir las siguientes entradas en la base de datos utilizando ya sea el comando mysql o alguna herramienta como Workbench
INSERT INTO `pika-gd`.`ClientRedirectUris` (`RedirectUri`, `ClientId`) VALUES (‘http://192.168.10.159’, ‘3’);
INSERT INTO `pika-gd`.`ClientRedirectUris` (`RedirectUri`, `ClientId`) VALUES (‘http://192.168.10.159/index.html’, ‘3’);
INSERT INTO `pika-gd`.`ClientRedirectUris` (`RedirectUri`, `ClientId`) VALUES (‘http://192.168.10.159/silent-refresh.html’, ‘3’);
Inserte en cada línea en nombre DNS o la IP del servidor
Ingreso al sistema
=============================================================
Utilice la dirección IP del servidor o el DNS con el que haya configurado la aplicación en el navegador para acceder a la aplicación.
La cuenta de acceso del administrador del sistema es:
Usuario: administrador
Contraseña: TuPassword
A veces la primera vez que se inicia sesión la pantalla sólo muestra la parte superior de la página, si ese es el caso basta con refrescar el navegador