NG Backend 2.0

— Esto es un borrador —

Descripción

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

Prerequistos

Arrancamos con un Linux preferible Kuine-LAMP v6.2 o Kuine-LAMaP v6.2 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 (por ejemplo)

$> git checkout develop
$> git pull origin develop

 

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.x/cli/php.ini)  así que coméntelas (luego las vuelve a activar)
open_basedir
allow_url_open
disable_functions *exec* curl* proc_open

Cambiese al directorio y ejecute

$> composer install
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
Updating dependencies
Lock file operations: 162 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 yiisoft/yii2-faker (2.0.5): Extracting archive
- Installing phpspec/php-diff (v1.1.3): Extracting archive
- Installing yiisoft/yii2-gii (2.2.6): Extracting archive
- Installing swiftmailer/swiftmailer (v6.3.0): Extracting archive
- Installing yiisoft/yii2-swiftmailer (2.1.3): Extracting archive
33 package suggestions were added by new dependencies, use `composer suggest` to see details.
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating autoload files
78 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Tengo 1 abandonado  .. pero ese sugerido no funciona bien con Outlook

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-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 están common son parámetros de toda la aplicación 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/
$> mkdir 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
$> 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