Instalación
Intro
Este documento describe los requisitos para un setup inicial del OMS.
Stack de desarrollo
Servidor Web
El OMS requiere las siguientes dependencias (directas):
-
PHP 5.6, junto (como mínimo) a las siguientes extensiones instaladas y habilitadas:
-
GD
-
APCu (v4.0.10)
-
Memcached (v2.2.0)
-
xDebug (v2.5.5)
-
PDO Mysql
-
OPCache
-
AMQP
-
BCMath
-
Mongo
-
Otras dependencias que no sean extensiones:
- phpunit
Mas allá de enumerarse las principales dependencias directas, se listan la totalidad de las utilizadas hoy en dia en entornos pseudo-productivos:
amqp apc apcu bcmath Core ctype curl date dom ereg fileinfo filter ftp gd hash iconv intl json libxml mbstring memcached mhash mongo mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_sqlite Phar posix readline redis Reflection session SimpleXML soap sockets SPL sqlite3 standard tokenizer xdebug xml xmlreader xmlwriter Zend OPcache zip zlib
Servidores requeridos
-
Servidores de Bases de Datos:
-
Relacional -> MySQL (v5.7)
-
No Relacional -> MongoDB (>= v4.2.x)
-
Broker de Colas AMQP -> RabbitMQ
Setup básico inicial
Partiendo de la ultima versión del sistema (v3.8) se definen los siguientes aspectos a configurar
Proyecto Symfony
Se requiere satisfacerlas a través del uso del gestor composer y la configuración definida en el archivo composer.lock.
Parámetros (Generales)
En el parameters.yml nos encontramos con
-
database_ y mongodb_: valores asociados al servidor de Base de datos.
-
request_context_config: define la URL publica donde esta alojado el servidor web. Este parámetro esta involucrado en el renderizado de URLs de flujos internos como es el envio de correos (donde se invita al usuario a acceder a información que expone el OMS).
-
mercado_pago: se atenderán en la sección correspondiente.
-
jwt_: configuración de JWT Token (path, phrase,..). Ver la sección Certificados.
-
redis_: Parámetros sin uso (se deben declarar pero su valor no importa).
-
historical_data: Define la configuración del archivado de ordenes. Se puede configurar el entorno como “histórico” (allow_request), o bien apuntar a donde se deberán enviar las ordenes candidatas a archivar.
-
service_wms: Servidor de WMS.
-
external_service_config: Parametros de configuracion para Servicios Externos al OMS (API External)
-
georeference_service: Servicio de Geolocalización de Ordenes (HERE p. ej.).
-
hashing_queues_enabled: Habilita la Dispersión (Hashing) en las colas para las cuales fueron requeridas (ShippingIndex y ClientStaticsDays).
Otros parámetros no especificados corresponden a los descriptos en su documentación de implementación.
Colas (AMQP / RabbitMQ)
Es necesario definir el Virtual Host (VH) usado en RabbitMQ, en el archivo app/config/default_vhost.yml, en la raiz del Archivo YAML:
default_vhost.yml
‘virtual_host_name’:
parameters:
…
Una vez definido el VH, las colas del OMS pueden ser generadas, a través del siguiente comando :
$ vendor/odolbeau/rabbit-mq-admin-toolkit/rabbit/app/config/default_vhost.yml --host=$HOST --user=$USUARIOCertificados
En el flujo de Autenticación basada en JWT, deben disponerse de un certificado para la encriptación utilizada en el Token generado.
Al ser una clave asimétrica (dupla publica / privada), se requieren 2 archivos *.pem, los mismos pueden ser generados usando OpenSSL (u otro utilitario a fin), de la siguiente forma:
echo “PASS” | openssl genpkey -out var/jwt/private.pem -pass stdin -aes256 -algorithm rsa -pkeyopt rsa_keygen_bits:4096
echo “PASS” | openssl pkey -in var/jwt/private.pem -passin stdin -out var/jwt/public.pem -pubout
MercadoPago
Es necesario configurar en este servicio como mínimo la URL a la cual se desean recibir las Notificaciones de IPN (internamente denominados Callbacks) segun la documentación vigente.
Solo de ser necesario, es posible que también se requiera cambiar las credenciales, que establecen a iFlow como el “vendor”.
Datos
Servidor Relacional (MySQL)
En la base de datos relacional, se encuentra la información mas sensible a trasmitir a un nuevo entorno.
Se recomienda partir de al menos los siguientes Schemas (tablas) del entorno de producción, debido a que poseen atributos, como el id y/o campos a fines , que son utilizados internamente por el Sistema:
• app_state
• app_carrier
• app_delivery_mode
• app_delivery_mode_shipping_mode
• app_shipping_mode
• app_depot
• app_event
• app_rule_action
• app_state_rule
• app_state_rule_permision
• app_order_state_rule
• app_order_state_rule_states_targets
• app_node
• app_route
• app_work_log_type
• que_queue
Servidor no relacional (MongoDB)
La creación de los schemas y los datos, no son requeridos.
Comandos
Los comandos del sistema son necesarios “instalarlos”, se recomienda tomar referencia de como fueron establecidos en produccion, o bien en su defecto en QA.
Muchos de los mismos fueron descriptos funcionalmente en sus respectivas documentaciones, aun así es posible conocerlos todos aquellos usando el comando de Symfony app/console, y prestando atención a aquellos que comiencen con:
• swarrot:consume: -> Consumers de RabbitMQ.
• app: ó app1: -> Commands del proyecto.