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