NG Backend

Descripción

Este manual indica como hacer la instalación del backend de OrfeoNG v1.0 partiendo de los fuentes en un Debian 12 o Ubuntu 22.04 o Windows XAMP.

Prerequistos

Arrancamos con un Linux preferible Kuine-LAMP v6 o Kuine-LAMaP v6 actualizado  o con un Windows usando XAMP configurado según esta guia.

Configuración

1. Descargue el backend del repositorio

$> git config --global http.sslVerify false                             ### Para que no moleste por el certificado
$> git clone https://aruba.skinatech.com/Orfeo-NG/ng_backend.git

Ingrese su usuario y contraseña para descargar, esto descarga el master y deber ser suficiente.

Si hace falta cambiarse de rama .. pude hacerlo con este comando

$> git checkout hotfix/skina

 

2 Instalar los paquetes de terceros mediante composer

Cámbiese a la carpeta ng_backend e instale los plugins necesarios para Yii2

Puede revisar la guia en https://www.yiiframework.com/doc/guide/2.0/es/start-installation

$> composer --version

** todas las restricciones de kuine molestan  (/etc/php/8.1/cli/php.ini)  así que coméntelas
open_basedir
allow_url_open
disable_functions *exec* curl* proc_open

Cámbiese al directorio y ejecute

$> composer install

fxp/composer-asset-plugin (installed globally) contains a Composer plugin which is currently not in your allow-plugins config.  See https://getcomposer.org/allow-plugins
Do you trust «fxp/composer-asset-plugin» to execute code and wish to enable it now? (writes «allow-plugins» to composer.json) [y,n,d,?]
The «fxp/composer-asset-plugin» plugin (installed globally) was skipped because it requires a Plugin API version («^1.0») that does not match your
Composer installation («2.2.0»).  You may need to run composer update with the «–no-plugins» option.

composer install
PHP Warning:  Module "curl" is already loaded in Unknown on line 0
PHP Warning:  Cannot load module "http" because required module "raphf" is not loaded in Unknown on line 0
No
 composer.lock file present. Updating dependencies to latest instead of 
installing from lock file. See https://getcomposer.org/install for more 
information.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 150 installs, 0 updates, 0 removals
  - Locking 2amigos/qrcode-library (1.1.0)
  - Locking almasaeed2010/adminlte (v2.4.18)
  - Locking bacon/bacon-qr-code (1.0.2)
  - Locking behat/gherkin (v4.9.0)
......
  - Installing swiftmailer/swiftmailer (v6.3.0): Extracting archive
  - Installing yiisoft/yii2-swiftmailer (2.1.3): Extracting archive
Generating autoload files
67 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Tengo 0 abandonados ****

3 Inicie el framework YII

En ese mismo directorio, ejecute el inicio de Yii con

$> php init

Seleccionar 0 ó 1 de acuerdo al entorno que se desee utilizar:

$> Yii Application Initialization Tool v1.0
Which environment do you want the application to be initialized in?
[0] Development
[1] Production
Your choice [0-1, or "q" to quit]

Escribir yes y pulsar la tecla Enter para confirmar el paso:

Initialize the application under 'Development' environment? [yes|no] yes

Y listo ..

OJO con los directorios en que debe escribir .. OJO ** Protéjalos desde apache (ya kuine lo hace)

Si esta en un Kuine / Linux  ejecute los siguientes comandos

chmod 0777 api/runtime
chmod 0777 api/web/assets
chmod 0777 backend/runtime
chmod 0777 backend/web/assets
chmod 0777 console/runtime
chmod 0777 frontend/runtime
chmod 0777 frontend/web/assets
chmod 0755 yii

$** Hemos tenido problemas con el api/runtime  (aunque esta 777) y creamos y ponemos permisos de paso al contenido

$*** cd api/runtime
$*** mkdir cache debug logs mpdf
$*** chown -R www-data:www-data cache debug logs mpdf

4. Configuración

Yii necesita de archivos de configuración y parámetros para poder conectarse con bases de datos, correos, entre otros los cuales no se encuentran agregados en el repositorio por temas de seguridad de contraseñas.

Hay archivos con la extensión .dist de los cuales se debe crear una copia con el mismo nombre exceptuando la extensión .dist y configurar las contraseñas de acceso según el ambiente con el que se desea trabajar


api/web/index.php

Sobreescriba a partir del archivo de ejemplo: /api/web/index.php.dist en la ruta /api/web/

$> cp index.php.dist index.php

Confirmar que las variables de entorno se encuentren correctamente configuradas de acuerdo al entorno con el se esté trabajando [desarrollo | producción]

defined('YII_DEBUG') or define('YII_DEBUG', true); // [true | false] ** Debe ser false en produccion
defined('YII_ENV') or define('YII_ENV', 'dev'); // [dev | prod]

$** OJO que Yii no hace esto bien. Si lo deja en produccion no hay ningun mensaje de debug


api/config/params.php


En las implementaciones comerciales, no demos, se debe poner orfeoNgExpress en false

orfeoNgExpress => false,


api/config/params-local.php

$> cp params-local.php.dist params-local.php

Asegure que los valores son los correctos

llaveAES: cambien la llave de AES por un larga .. EJM: pwgen -y 30 (esta tiene que estar en el front tambien)
debugAES : // [TRUE,FALSE]
ipServer: Es la direccion publica del aplicativo. (Esto es usado para las notificaciones con Link .. para que pueda entrar)

ejm: ‘http://demong1.skinatech.com/orfeo-ng/#/’,              ********* OJO .. termina en /

$***  puede ser https pero si escoge ir por SSL .. entonces todo debe ser https hasta los sockets
urlBaseApiPublic: La ruta de la pagina publica de PQRs
ejm: ‘http://demong1.skinatech.com/ng_backend/frontend/web/’, //Ruta de página pública

debugEmail: Es para etapa de desarrollo .. donde recibe todas las notificaciones.

Conexion a la autenticacion externa con protocolo LDAP (LDAP o AD) los parametros son estandares y reconocidos (ojo con el SSL del AD)

– ‘ldapServer‘ => ‘192.168.69.217’,
– ‘cadenaBusqLDAP‘ => ‘ou=People,o=skinatech,dc=com’,
– ‘campoBusqLDAP‘ => ‘uid’,
– ‘adminLDAP‘ => ‘cn=Manager,dc=skinatech,dc=com’,
– ‘paswLDAP‘ => ‘agh0la$p8U’,

Usuario y clave de la página pública (Usuario Anónimo, utilizado para login automático)

– ‘userPublicPage => ‘anonimo’,

– ‘passwordPublicPage => ‘4n0N1m0$’,

Por Ultimo el tipo de BD

motorDB: Motor utilizado para la basede datos principal: [‘MySQL – MariaDB’, ‘POSTGRESQL’, ‘MSSQL’, ‘ORACLE’]

– Comente lo que no necesita

NOTA: Lo que estan common son parametros de toda la aplicacion mientras que los del api solo sirven para el backend.


common/config/main-local.php

Sobreescriba a partir del archivo de ejemplo: /common/config/main-local.php.dist en la ruta /common/config/

$> cp main-local.php.dist main-local.php

Nota: En este se deben configurar las credenciales de la conexión a base de datos y el enví­o de correos que se configuró anteriormente. En el mismo archivo hay varios ejemplos para las bases de datos soportadas.

EJM:

        'db' => [                    
            'class' => 'yii\db\Connection',
            'dsn' => 'MySQL - MariaDB:host=127.0.0.1;dbname=orfeong_db',
            'username' => 'orfeong_usr',
            'password' => 'aeCh7zu1Oova0oe2esio', 
            'charset' => 'utf8',
        ],            
 

common/config/params-local.php

$> cp params-local.php.dist params-local.php

$**  Si no se puede cambiar su configuracion .. para que lo tengo aqui .. !!  ??

 

5. Crear directorios para almacenamiento de archivos de la aplicación

En el mismo directorio de backend, se deben crear las siguientes carpetas donde se almecenaran los archivos generados por la aplicación

$> mkdir api/web/trd_formats  api/web/tmp_mail  api/web/bodega   api/web/expendientes_paz_y_salvo   api/web/bar_code_consecutivos   api/web/bodega/cierre_expediente   api/web/bodega/downloads   api/web/bodega/indices_xml

y asignarle permisos 775 con permisos de apache

$> cd api/web/
$> chown www-data:www-data actas/ cuadro_documental/ documentos/ plantillas/ tmp_docs/ tmp_masiva/ user_formats/ usuarios/ trd_formats/ tmp_mail/ bodega/ gestion_archivo/  expendientes_paz_y_salvo/ bar_code_consecutivos
$> chmod 755 actas/ cuadro_documental/ documentos/ plantillas/ tmp_docs/ tmp_masiva/ user_formats/ usuarios/ trd_formats/ tmp_mail/ bodega/ gestion_archivo/  expendientes_paz_y_salvo/ bar_code_consecutivos

$> cd ng_backend
$> chown -R www-data:www-data vendor/

$** Esto toca corregirlo eventualmente porque por ahora lo parchamos con Apache.. pero no es presentable y es una vulnerabilidad de seguridad

Funciones a desbloquear

Recuerde en los Linux / Kuines

quitar bloqueo de exec()
php.ini habilitar proc_open

 

Trucos

 

Problemas

 

 

Referencias

FIN